fosfa 发表于 2016-3-2 20:49:00

同一个sheet中连续导入Excel就会使程序无响应

本帖最后由 fosfa 于 2016-3-8 18:33 编辑

在我的程序中需要在同一个sheet中先导入一个Excel文件,进行一定操作后 再导入另外一个Excel文件,代码如下
      
      sheet1.OpenExcel("D://DATA.xls"); //在sheet1中打开文件:DATA.xls

      ...... ;//对表格中的数据进行一定处理。

      sheet1.OpenExcel("D://Result.xls");//在sheet1中打开文件:Result.xls



但是我写出来的程序一运行不是没有响应,就是在打开Result.xls后sheet1中的内容为Result.xls与DATA.xls的叠加。   
我是刚自学入行的纯小白,请问大神,这该怎么整? 是不是应该在打开第一个Excel后需要释放一下啊?

gw0506 发表于 2016-3-3 16:16:00

按理说,第二次加载会冲掉第一次加载的内容以及你处理的内容。不应该出现叠加的问题。

fosfa 发表于 2016-3-3 18:50:00

回复 2楼gw0506的帖子

但我这边的结果是只要连续打开两个Excel,就会是程序没有响应。。例如:

      sheet1.OpenExcel("D://DATA.xls");
      sheet1.OpenExcel("D://Result.xls");

连续写这两个语句,中间不夹杂其它任何语句, 然后运行程序,就会直接没有响应

gw0506 发表于 2016-3-4 12:19:00

因为多线程导致的。你加一句代码this.spread1.Workbook.LoadExcelOnDemand = false;

另外,你这样加载文件,等于只加载了Result.xls,没有必要。所以一般不会这么做。

fosfa 发表于 2016-3-4 22:00:00

回复 4楼gw0506的帖子

谢谢你,加上这个语句后果然可以了, 能告诉我这个语句是什么意思吗?

gw0506 发表于 2016-3-8 14:04:20

LoadExcelOnDemand 为true的时候,后台加载,启动多线程。文件被占用,所以报错。

fosfa 发表于 2016-3-8 18:32:30

gw0506 发表于 2016-3-8 14:04
LoadExcelOnDemand 为true的时候,后台加载,启动多线程。文件被占用,所以报错。

谢谢!!!

gw0506 发表于 2016-3-9 10:11:43

fosfa 发表于 2016-3-8 18:32
谢谢!!!

不客气~~
页: [1]
查看完整版本: 同一个sheet中连续导入Excel就会使程序无响应