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 回答