找回密码
 立即注册

QQ登录

只需一步,快速开始

fosfa

注册会员

7

主题

15

帖子

48

积分

注册会员

积分
48
fosfa
注册会员   /  发表于:2016-3-2 20:49  /   查看:6295  /  回复:7
本帖最后由 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后需要释放一下啊?

7 个回复

倒序浏览
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
5#
回复 4楼gw0506的帖子

谢谢你,加上这个语句后果然可以了, 能告诉我这个语句是什么意思吗?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-8 14:04:20
6#
LoadExcelOnDemand 为true的时候,后台加载,启动多线程。文件被占用,所以报错。
回复 使用道具 举报
fosfa
注册会员   /  发表于:2016-3-8 18:32:30
7#
gw0506 发表于 2016-3-8 14:04
LoadExcelOnDemand 为true的时候,后台加载,启动多线程。文件被占用,所以报错。

谢谢!!!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-9 10:11:43
8#

不客气~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部