当我试图使用pythons pywin32包从pgsql获取大约250k行到excel时
我得到以下错误
pywintypes.com_错误:(-2147024882,“没有足够的内存资源来完成此操作。”,无,无)

最佳答案

我在装入92875x 60的纸张时遇到了同样的问题。在这张床单变得这么大之前,它工作得很好。
我想出了一个解决这个问题的方法,很简单。与其加载整个数据范围,不如先读取一行,然后读取另一行。
例如,我的代码最初是这样的:

finalrow = ws.Cells(ws.Rows.Count, "A").End(win32com.client.constants.xlUp).Row
finalcell = '$%s$%s' % (finalcolumn, finalrow)
r = ws.Range('$A$1:' + finalcell).Value
rows = list(r)

其中finalcolumn是一个常量,比如'BH'。
更改为:
finalrow = ws.Cells(ws.Rows.Count, "A").End(win32com.client.constants.xlUp).Row
finalcell = '$%s$%s' % (finalcolumn, finalrow)
rows = []
for i in range(finalrow):
    r = ws.Range('$A$%s:$%s$%s' % (i+1, finalcolumn, i+1)).Value
    rows += list(r)

没有观察到显著的性能影响。

10-07 17:24