我正在嘗試使用pywin32庫向Excel電子表格寫入大量數據。作爲我正面臨的問題的一個簡單示例,請使用以下代碼生成一個1000單元x 1000單元乘法表。pywin32和excel。編寫大量數據時出現異常
import win32com.client
from win32com.client import constants as c
xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
xl.Visible = True
Workbook = xl.Workbooks.Add()
Sheets = Workbook.Sheets
tableSize = 1000
for i in range(tableSize):
for j in range(tableSize):
Sheets(1).Cells(i+1, j+1).Value = i*j
對於較小的值可以使用。然而,對於較大值的Python程序最終與錯誤崩潰:
Traceback (most recent call last):
File ".\Example.py", line 16, in <module>
Sheets(1).Cells(i+1, j+1).Value = i*j
File "C:\PYTHON27\lib\site-packages\win32com\client\__init__.py", line 474, in __setattr__
self._oleobj_.Invoke(*(args + (value,) + defArgs)) pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146777998), None)
我已經承認由於失利,這是比xlwt顯著慢,但我仍然好奇發生了什麼導致這個錯誤。
是較大的負值你把價值?我們談論的價值有多大? – Logan 2012-08-06 21:49:59
不,它不是。程序應該輸入到電子表格中的最大值是1M,但它永遠不會達到那麼大。據我所知,大負數在某種程度上對應於表示一般錯誤的錯誤代碼。編輯:我已經做了其他搜索該錯誤代碼,並已發現一系列的問題,但似乎沒有什麼非常類似於我的事實,它是有關使用pywin32。 – 2012-08-06 22:00:32
如果它幫助任何來這裏尋找解決這個問題的人。添加檢查並等待每個單元顯着增加了程序運行的時間和寫入的單元數量。例如(1).Cells(i + 1,j + 1).Value!= i * j:pass'但是,程序仍然會崩潰。 – 2012-08-07 14:47:29