Я использую 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 - мой модуль.Возникнут ли эти исключения, зависит от размера столбцов, строк и ячеек записанных данных.Однако я не знаю, что за этим стоит система: (