0

そのため、アプリケーションにこのページがあり、ユーザーはレンダリングされたビューの「ハードコピー」をダウンロードできます。これは、プロジェクト内のロールのスキルとその要件を表し、ロールのすべての人々によるスキルの履行を示します。

StringBuilderコンマ区切りファイルを作成するためにa を使用できるため、csv ファイルを操作する機能があります。

ただし、簡単な書式設定が必要な Excel アプローチに近づく前に、同じ方法ではこれを達成できないことに気付きました。

以前、Interop を使用して Excel ファイルを生成したことがありますが、生成後にダウンロードできるファイルを作成するにはどうすればよいですか?

CSV ファイルを生成して返す作業コードは次のとおりです。

public ActionResult DownloadSQEPToCSV(int projectID)
{
    //source my data

    StringBuilder sBuilder = new StringBuilder();

    sBuilder.Append("SQEPMatrix, For Project," + data.First().Project.ContractNumber);

    foreach (var role in data)
    {
        sBuilder.Append("\r\nRole:," + role.First().Title.Name);
        sBuilder.Append("\r\nSkill,Requirement");
        foreach (var person in role.Distinct(uCom))
        {
            sBuilder.Append("," + person.User.UserDetail.Name);
        }
        foreach (var skill in role.Distinct(uCom))
        {
            //More stuff to generate what I want
        }
        sBuilder.Append("\r\n");
    }

    //Attach file to the header 
    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment;filename=SQEPMatrix for " + data.First().Project.ContractNumber + ".csv");
    Response.ContentType = "text/csv";
    Response.Write(sBuilder);
    Response.End();

    return SetTitleAndID("SQEP","dl_sqep_csv");
}

このコードは、次のスクリプトによって呼び出されます。

function download(id) {
    window.location.href = '../../Project/DownloadSQEPExcel?projectID=' + id;
}

私の質問は、どうすれば Excel スプレッドシートを生成し、生成されたファイルを .csv ファイルを返す方法と同様の方法で返すことができるかということです。

4

1 に答える 1