我正在使用 win32com.client 将数据写入 Excel 文件。
这花费了太多时间(下面的代码模拟了我想要更新 Excel 的数据量,大约需要 2 秒)。
有没有一种方法可以在一次调用中更新多个单元格(具有不同的值),而不是一个一个地填充它们?或者也许使用更有效的不同方法?
我正在使用 python 2.7 和 Office 2010。
这是代码:
from win32com.client import Dispatch
xlsApp = Dispatch('Excel.Application')
xlsApp.Workbooks.Add()
xlsApp.Visible = True
workSheet = xlsApp.Worksheets(1)
for i in range(300):
for j in range(20):
workSheet.Cells(i+1,j+1).Value = (i+10000)*j
一些建议:
ScreenUpdating关闭,手动计算
请尝试以下操作:
xlsApp.ScreenUpdating = False
xlsApp.Calculation = -4135 # manual
try:
#
worksheet = ...
for i in range(...):
#
finally:
xlsApp.ScreenUpdating = True
xlsApp.Calculation = -4105 # automatic
一次分配多个单元格
使用 VBA,您可以将范围的值设置为数组。一次设置多个值可能会更快:
' VBA code
ActiveSheet.Range("A1:D1").Value = Array(1, 2, 3, 4)
我从来没有用Python尝试过,我建议你尝试如下:
worksheet.Range("A1:D1").Value = [1, 2, 3, 4]
不同的方法
考虑使用openpyxl https://bitbucket.org/ericgazoni/openpyxl/wiki/Home or xlwt http://pypi.python.org/pypi/xlwt。 Openpyxls 可让您创建.xlsx
文件,无需安装 Excel。 Xlwt 做同样的事情.xls
files.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)