请问导出EXCEL时切换其他EXCEL报错的有关问题
请教导出EXCEL时切换其他EXCEL报错的问题
在用代码导出EXCEL时,经常碰到一个问题,请高手指点一下。
用类似下面的代码导出EXCEL:
也就是一个单元格一个单元格写这种方式。
有时,数据量比较大,几万条以上,这样会用不少时间。
使用者在这时会切换到其他的EXCEL或打开新的EXCEL,然后就会报错,偶尔也碰到过会写数据到其他的EXCEL中(谁是当前正在操作的EXCEL就写到那个里)。
有没有什么办法可以避免出现这个错误???
因为需要设定导出的EXCEL的格式,所以只能用这种方法来导出。
------解决方案--------------------
导出时,先不要显示excel(MSExcel.Visible := False),结束时再显示(MSExcel.Visible := True;)
------解决方案--------------------
应该是这一句MSExcel.Visible := True;的原因,我刚试了一下我刚做的一个导出程序,切换到其他的EXCEL或打开新的EXCEL都不会出现你说的问题
------解决方案--------------------
那改用NativeExcel。这种效率更高,不是调用MS或WPS提供的COM服务,几万条几秒就搞定。需要显示时,再调用Com服务打开。
------解决方案--------------------
或者把你的导出的完整代码贴出来看看,我的程序数据量也不少,而且还分页,刚又试了几次,没出现错乱的问题
------解决方案--------------------
nativeExcel能动态处理格式化数据吗
------解决方案--------------------
基本单元格的格式设定都可满足(数据的格式化,这个没问题),不能保证全部(包含最新的),因为是开源的,维护得不够完善。
------解决方案--------------------
不要用MSExcel.ActiveSheet,要在MSSheet:= MSExcel.WorkBooks.Add;
MSExcel.ActiveSheet会受到用户操作的干扰
------解决方案--------------------
也有可能,我是D7+Office2003环境,基本最稳定的组合
在用代码导出EXCEL时,经常碰到一个问题,请高手指点一下。
用类似下面的代码导出EXCEL:
MSExcel := CreateOleObject('Excel.Application');
MSExcel.Caption := Title;
MSExcel.WorkBooks.Add;
MSExcel.Visible := True;
……
MSExcel.ActiveSheet.Cells[i, 1].Value := '序号';
……
也就是一个单元格一个单元格写这种方式。
有时,数据量比较大,几万条以上,这样会用不少时间。
使用者在这时会切换到其他的EXCEL或打开新的EXCEL,然后就会报错,偶尔也碰到过会写数据到其他的EXCEL中(谁是当前正在操作的EXCEL就写到那个里)。
有没有什么办法可以避免出现这个错误???
因为需要设定导出的EXCEL的格式,所以只能用这种方法来导出。
------解决方案--------------------
导出时,先不要显示excel(MSExcel.Visible := False),结束时再显示(MSExcel.Visible := True;)
------解决方案--------------------
应该是这一句MSExcel.Visible := True;的原因,我刚试了一下我刚做的一个导出程序,切换到其他的EXCEL或打开新的EXCEL都不会出现你说的问题
------解决方案--------------------
那改用NativeExcel。这种效率更高,不是调用MS或WPS提供的COM服务,几万条几秒就搞定。需要显示时,再调用Com服务打开。
------解决方案--------------------
或者把你的导出的完整代码贴出来看看,我的程序数据量也不少,而且还分页,刚又试了几次,没出现错乱的问题
------解决方案--------------------
nativeExcel能动态处理格式化数据吗
------解决方案--------------------
nativeExcel能动态处理格式化数据吗
基本单元格的格式设定都可满足(数据的格式化,这个没问题),不能保证全部(包含最新的),因为是开源的,维护得不够完善。
------解决方案--------------------
不要用MSExcel.ActiveSheet,要在MSSheet:= MSExcel.WorkBooks.Add;
MSExcel.ActiveSheet会受到用户操作的干扰
------解决方案--------------------
应该是这一句MSExcel.Visible := True;的原因,我刚试了一下我刚做的一个导出程序,切换到其他的EXCEL或打开新的EXCEL都不会出现你说的问题
你是用的什么版本的Delphi和Excel??好像版本不同,出现的问题也不同。之前是用Delphi 7操作Excel,好像问题不多,而后来用Delphi 2010操作Excel,限制就多了。
也有可能,我是D7+Office2003环境,基本最稳定的组合