0

非常に大きなファイルを「Excel エクスポート」としてエクスポートする必要があります。.NET は Excel ファイルをエクスポートできないため、単純な html テーブルを使用しました。

正常に動作しますが、遅いです。

超巨大な文字列を作成し、完了したらすべてをエクスポートしようとする代わりに、作成中に各行を context.response.write することは可能ですか?

これを行うためにどの関数が使用されているかはあまり気にしませんが、私の言いたいことを理解していただければ幸いです。文字列をメモリに構築してから、一度に送信しようとはしません。テーブルを作成するときにエクスポートしたいと思います。

これは可能ですか?

前もって感謝します!

4

1 に答える 1

2

はい、各行で context.Response.Write を使用しても問題ありません。大きな文字列を構築したくない理由がサーバーのメモリ使用である場合は、次のように応答のバッファリングをオフにする必要があります。

context.Response.BufferOutput = false;

それ以外の場合、.NET は書き込みを最後までメモリにバッファリングします。

理由が実行時間である場合は、複数の文字列連結によるパフォーマンス ヒットが発生している可能性があります。その場合、代わりに StringBuilder クラスを使用してテーブルを作成できます。

例えば...

StringBuilder sb = new StringBuilder();
for each (<row in database>) {
    sb.AppendLine(<current table row>);
}
context.Response.Write(sb.ToString());

応答バッファリングの詳細: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.bufferoutput.aspx

StringBuilder クラスの詳細: http://msdn.microsoft.com/en-us/library/system.text.stringbuilder(v=vs.110).aspx

于 2012-11-12T22:58:30.823 に答える