最近一个项目是一个基于winform的报告系统,根据一系列的查询参数计算出结果,最终生成一个格式规范的word文档,刚开始数据量不大(500行)数据以内,写入速度还能接受,但最近遇到一个问题就是当出现大量的数据行的时候,写入word的过程就变的非常慢,CPU直接拉到100%,本人机器配置已经算比较高的了,8G内存+i5CPU,依旧假死,该问题困扰了我几天,也问了google很多次,基本上给出的答案都是word本身就比较慢这样一类的答案,或者是非托管代码的优化,慢也就算了,至少可以通过进度条来交互,假死到报错,这个绝对是零容忍的。尝试了很多种方法,包括将非托管代码强制进行回收,多线程等方式,最终都失败了,当然,黄天不负有心人最终总算是解决了问题了,我的数据量不算特别巨大,就4000多行写入表中,废话少说,直接贴代码:
常规写入word表格的方法:
#region Replace Title
foreach (KeyValuePair<AnalyteReNameEntity, DataTable> d in dicList)
{
AnalyteReNameEntity key = d.Key;
if (dicList.Count > 2)
{
if (index.Equals(dicList.Count - 2))
{
analyteTitles += key.NewAnalyteName + " and ";
}
else
{
analyteTitles += key.NewAnalyteName + " , ";
}
}
else if (dicList.Count == 2)
{
analyteTitles += key.NewAnalyteName + " and ";
}
else
{
analyteTitles += key.NewAnalyteName;
}
index++;
}
analyteTitles = analyt