我使用以下代码行
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分钟。
答案 0 :(得分:0)
尝试
workbook.SaveToStream(outputstream, SpreadsheetGear.FileFormat.OpenXMLWorkbook);
流通常可以更快,因为它们通常可以节省与ram一样快的速度。而不是填写页面文件。
答案 1 :(得分:0)
对于大型工作簿,SpreadsheetGear进程运行所花费的时间与将工作簿打开到内存中所花费的时间有关,而不是与编译信息并下载它所花费的时间有关。您可以通过请求打开工作簿并发送简单的成功响应而无需下载字节数组来进行测试。大于1-2MB的电子表格文件开始使速度变慢,并且超过5MB的过程可能变得非常缓慢。
选项是: