我正在使用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是我的一个模块。是否出现这些异常取决于所写数据的列,行,单元大小。但是我不知道背后的系统是什么:(
答案 0 :(得分:0)
将数组传输到范围没有固定的大小限制。它更多地取决于阵列,RAM等所需的内存。如果数据量很大,最好将阵列拆分成块并一次写入一个。