Python - excel:写入多个单元格需要时间

ome*_*ach 5 python excel

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

cod*_*ape 4

一些建议:

ScreenUpdating关闭,手动计算

请尝试以下操作:

xlsApp.ScreenUpdating = False
xlsApp.Calculation = -4135 # manual
try:
    #
    worksheet = ...
    for i in range(...):
    # 
finally:
    xlsApp.ScreenUpdating = True
    xlsApp.Calculation = -4105 # automatic
Run Code Online (Sandbox Code Playgroud)

一次分配多个单元格

使用 VBA,您可以将范围的值设置为数组。一次设置多个值可能会更快:

' VBA code
ActiveSheet.Range("A1:D1").Value = Array(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

我从来没有用Python尝试过,我建议你尝试如下:

worksheet.Range("A1:D1").Value = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

不同的方法

考虑使用openpyxlxlwt。Openpyxls 允许您.xlsx在不安装 Excel 的情况下创建文件。Xlwt 对文件做同样的事情.xls

  • 你知道-4135和-4105来自哪里吗?你是从什么文档中得到这个的。对我来说很好用,只是好奇 (2认同)