python – pywin32和excel.写入大量数据时例外
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – pywin32和excel.写入大量数据时例外,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1588字,纯文字阅读大概需要3分钟。
内容图文
![python – pywin32和excel.写入大量数据时例外](/upload/InfoBanner/zyjiaocheng/784/572b864da04b45af976d966547df8a99.jpg)
我目前正在尝试使用pywin32库将大量数据写入excel电子表格.作为我面临的问题的一个简单示例,请使用以下代码生成1000个单元格x 1000单元格乘法表.
import win32com.client
from win32com.client import constants as c
xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
xl.Visible = True
Workbook = xl.Workbooks.Add()
Sheets = Workbook.Sheets
tableSize = 1000
for i in range(tableSize):
for j in range(tableSize):
Sheets(1).Cells(i+1, j+1).Value = i*j
对于小值,这是有效的.但是,对于更大的值,python程序最终会因错误而崩溃:
Traceback (most recent call last):
File ".\Example.py", line 16, in <module>
Sheets(1).Cells(i+1, j+1).Value = i*j
File "C:\PYTHON27\lib\site-packages\win32com\client\__init__.py", line 474, in __setattr__
self._oleobj_.Invoke(*(args + (value,) + defArgs)) pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146777998), None)
我已经承认失败了,因为这比xlwt明显慢,但我仍然对发生什么导致这个错误感到好奇.
解决方法:
我想到了.
仅当用户在代码运行时与excel窗口交互时才会出现此错误.通过在使用excel进行任何工作之前添加xl.Interactive = False,可以避免这种情况.如果在应用程序可见之前添加了此项,则无法进行任何交互.
所以最终的代码是:
import win32com.client
from win32com.client import constants as c
xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
xl.Interactive = False
xl.Visible = True
Workbook = xl.Workbooks.Add()
Sheets = Workbook.Sheets
Sheets(1).Cells(1,2).Value = "Test"
print Sheets(1).Cells(1,2).Value
tableSize = 1000
for i in range(tableSize):
for j in range(tableSize):
Sheets(1).Cells(i+1, j+1).Value = i*j
内容总结
以上是互联网集市为您收集整理的python – pywin32和excel.写入大量数据时例外全部内容,希望文章能够帮你解决python – pywin32和excel.写入大量数据时例外所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。