Pywin32 Excel写入限制?

时间:2011-05-30 01:12:25

标签: python excel excel-vba pywin32 vba

我正在使用pywin32以及通过获取一些范围对象然后使用

写入范围来将范围写入excel的常用方法
 range.Value=my_data

(它的语法与VBA完全相同)

现在,如果我有一组相当大的单元格(> 6000个字符)并且我通过设置范围对象的值一次性写出它们,那么它有时会在其中一个单元格中抛出异常(但是单独写单元格会起作用。)

您是否知道我应该考虑使用Excel和写入范围操作的任何限制?

例外情况如

Traceback (most recent call last):
  File "test2.py", line 9, in <module>
    e.write_area([tuple("a"*10000 for i in range(20))]*20, sheet="Tabelle1")
  File "excel_com.py", line 209, in write_area
    self.get_range(col, row, col+num_col-1, row+num_row-1, sheet=sheet).Value=data
  File "C:\Python31\lib\site-packages\win32com\client\dynamic.py", line 550, in __setattr__
    self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
pywintypes.com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, None, None, None, 0, -2146827284), None)

or

Traceback (most recent call last):
  File "test2.py", line 9, in <module>
    e.write_area([tuple("a"*1000 for i in range(20))]*10000, sheet="Tabelle1")
  File "excel_com.py", line 209, in write_area
    self.get_range(col, row, col+num_col-1, row+num_row-1, sheet=sheet).Value=data
  File "C:\Python31\lib\site-packages\win32com\client\dynamic.py", line 521, in __setattr__
    debug_attr_print("SetAttr called for %s.%s=%s on DispatchContainer" % (self._username_, attr, repr(value)))
MemoryError

其中excel_com.py是我的一个模块。是否出现这些异常取决于所写数据的列,行,单元大小。但是我不知道背后的系统是什么:(

1 个答案:

答案 0 :(得分:0)

将数组传输到范围没有固定的大小限制。它更多地取决于阵列,RAM等所需的内存。如果数据量很大,最好将阵列拆分成块并一次写入一个。