ASP.NET DATASET 导出到excel速度很慢

meidaya2000 2012-05-02 12:54:09
现在要把数据从dataset导出到excel 测试数据1W条,如果只导出小部分的话 速度还能接受,但是全部导出的话,
十几分钟倒不出来。网上虽然有导出的比较快的方法,但是导出的是伪excle文件,不能导入的。下面是我用的代码,也是网上找的:

string excelName ="\\"+ DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
string path = Server.MapPath("upfiles") + excelName;
Excel.Application excel = new Excel.Application(); //Execl的操作类
//读取保存目标的对象
Excel.Workbook bookDest = (Excel.WorkbookClass)excel.Workbooks.Add(Missing.Value);
Excel.Worksheet sheetDest = bookDest.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value) as Excel.Worksheet;//给工作薄添加一个Sheet
sheetDest.Rows.RowHeight = 20;

sheetDest.Name = strSheetName;

int rowIndex = 1;
int colIndex = 0;

excel.Application.Workbooks.Add(true);

foreach (DataColumn col in dt.Columns)
{
colIndex++;
sheetDest.Cells[1, colIndex] = col.ColumnName;
}

//导入数据行
foreach (DataRow row in dt.Rows)
{
rowIndex++;
colIndex = 0;
foreach (DataColumn col in dt.Columns)
{
colIndex++;
sheetDest.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();

}
}
bookDest.Saved = true;
bookDest.SaveCopyAs(path);

excel.Quit();
excel = null;

GC.Collect();



麻烦给位提点建议,有代码更好,速度别太慢就行。
...全文
442 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2012-05-02
  • 打赏
  • 举报
回复
没办法,除非你很清楚excel的数据结构,用流写入
meidaya2000 2012-05-02
  • 打赏
  • 举报
回复
结贴了,感谢大家!
最后用NPOI做的,1w条数据很快就导出来了,格式也是我需要的。
IT-Style 2012-05-02
  • 打赏
  • 举报
回复
我们在程序中能做的只能是优化查询及导出.
事理 2012-05-02
  • 打赏
  • 举报
回复
DataTable就这速度了,如果要速度好的,数据库有个自带的导出的功能,可以用sql语句实现.
myhope88 2012-05-02
  • 打赏
  • 举报
回复 1
分批吧
meidaya2000 2012-05-02
  • 打赏
  • 举报
回复 1
正在用NPOI和aspose.cells做测试,
zhangxd160 2012-05-02
  • 打赏
  • 举报
回复
可能得用aspose.cells等组件。
hanqing_liu 2012-05-02
  • 打赏
  • 举报
回复
试试 NPOI或aspose.cells
meidaya2000 2012-05-02
  • 打赏
  • 举报
回复
bdmh
感谢您的回复!
不过这方法对现在的我来说太高深了。

哪位解决过类似问题的,给点建议呗。
一克代码 2012-05-02
  • 打赏
  • 举报
回复
用多线程导吧 !

一个线程负责1000条!

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧