我使用以下几行代码
byte[] byteInfo = workbook.SaveToMemory(FileFormat.OpenXMLWorkbookMacroEnabled);
workStream.Write(byteInfo, 0, byteInfo.Length);
workStream.Position = 0;
return workStream;在C#和Spreadsheetagear的帮助下,从浏览器下载excel文件。
它适用于较少的记录,但当我尝试下载一个包含大量数据的工作簿(一个具有50k行、1k列和启用宏的excel )时,下面这行代码
byte[] byteInfo = workbook.SaveToMemory(FileFormat.OpenXMLWorkbookMacroEnabled);仅此一项就需要近4-5分钟。有没有什么优化的方法可以让下载大文件只需要1到2分钟?
发布于 2018-07-21 00:56:15
试一试
workbook.SaveToStream(outputstream, SpreadsheetGear.FileFormat.OpenXMLWorkbook);流通常可以更快,因为它们通常保存得与ram将占用的一样快。而不是填满页面文件。
发布于 2018-07-22 06:48:19
对于大型工作簿,运行SpreadsheetGear进程所用的时间与将工作簿打开到内存中所用的时间有关,而不是与编译信息和下载信息所用的时间有关。您可以通过请求打开工作簿并发送一个不带下载的字节数组的简单成功响应来测试这一点。大小超过1-2MB的电子表格文件开始变慢,超过5MB的过程会变得非常慢。
选项包括:
创建并存储的文件
https://stackoverflow.com/questions/51444555
复制相似问题