本当に大きなcsvファイル(〜100MB)をエクスポートする必要があります。インターネット上で私は、同様のコードを発見し、私の場合のためにそれを実装:ASP.NET MVCプロジェクトで大規模なCSVファイルをダウンロード
public class CSVExporter
{
public static void WriteToCSV(List<Person> personList)
{
string attachment = "attachment; filename=PersonList.csv";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.AddHeader("Pragma", "public");
WriteColumnName();
foreach (Person person in personList)
{
WriteUserInfo(person);
}
HttpContext.Current.Response.End();
}
private static void WriteUserInfo(Person person)
{
StringBuilder stringBuilder = new StringBuilder();
AddComma(person.Name, stringBuilder);
AddComma(person.Family, stringBuilder);
AddComma(person.Age.ToString(), stringBuilder);
AddComma(string.Format("{0:C2}", person.Salary), stringBuilder);
HttpContext.Current.Response.Write(stringBuilder.ToString());
HttpContext.Current.Response.Write(Environment.NewLine);
}
private static void AddComma(string value, StringBuilder stringBuilder)
{
stringBuilder.Append(value.Replace(',', ' '));
stringBuilder.Append(", ");
}
private static void WriteColumnName()
{
string columnNames = "Name, Family, Age, Salary";
HttpContext.Current.Response.Write(columnNames);
HttpContext.Current.Response.Write(Environment.NewLine);
}
}
問題は、私が前にダウンロードを開始したいです全体CSVが構築されました(!)。なぜ私はそれもそうだと思うように働かないのですが、私は何を変えなければなりませんか?
二迅速コメント:詳細については、この記事を参照してくださいレスポンス出力は1000行程度です。 –
@Morten Mertner、ありがとう、私はすでにこれを実行しています。これはサンプルです。 –
のコードに基づいています。これをMVCフレームワークのどこに置くのが好きですか?アクションからWriteToCSV()メソッドを呼び出すだけでしたか? –