使用COM组件的方式向Excel中写入数据。把从DataTable获取的所有的数据都保存在了一个二维数组中,object[,] arrayList = new object[tableNPCC.Rows.Count, tableNPCC.Columns.Count];
//这里都是赋值操作Range newRangeArea = sheet.Range[sheet.Cells[2, 1], sheet.Cells[arrayList.GetLongLength(0) + 1, arrayList.GetLength(1)]];
newRangeArea.Value2 = arrayList;但是在执行的时候,速度非常慢,而且去查看Excel进程,会发现Excel进程正在以没秒钟8KB左右的速度增加内存,貌似说明程序正在向Excel文件写入内容。但是这样速度太慢了啊,有2万多条数据,好长时间都没写完。有没有什么高效的方法?
//这里都是赋值操作Range newRangeArea = sheet.Range[sheet.Cells[2, 1], sheet.Cells[arrayList.GetLongLength(0) + 1, arrayList.GetLength(1)]];
newRangeArea.Value2 = arrayList;但是在执行的时候,速度非常慢,而且去查看Excel进程,会发现Excel进程正在以没秒钟8KB左右的速度增加内存,貌似说明程序正在向Excel文件写入内容。但是这样速度太慢了啊,有2万多条数据,好长时间都没写完。有没有什么高效的方法?
什么意思 难道你们还需要异步并行写入吗?写excel又不会涉及到与其他模块很多的交互,
就两步,拿到数据,写入excel。
又不会对其他部分有影响,你部分更换模块都行啊。
数据量大的 用npoi ,数据少的 还是用以前的。
什么意思 难道你们还需要异步并行写入吗?写excel又不会涉及到与其他模块很多的交互,
就两步,拿到数据,写入excel。
又不会对其他部分有影响,你部分更换模块都行啊。
数据量大的 用npoi ,数据少的 还是用以前的。在做这个项目之前,我也不知道Excel竟然有多人共享模式。就是说,局域网中的多台电脑可以同时打开一个共享目录中的Excel文件,然后Excel能够Merge这些编辑的内容。npoi由于不用调用COM组件,是不是很快啊?
但npoi非常快,把office com秒出翔,是毫无疑问的。“然后Excel能够Merge这些编辑的内容。”
这点不理解,你确定不是使用加锁同步的方式,而是Merge写入的内容?
要是内容冲突呢?