【发布时间】:2016-04-13 18:30:09
【问题描述】:
我在这里阅读了很多关于使用 openpyxl 和 load_workbook() 中的 read_only 参数读取大型 excel 文件的问题,并且我已经使用 source excels 50x30 成功完成了它,但是当我尝试在带有 30x1100 工作表的工作簿,它会停止。现在,它只是读取excel并将其传输到多维数组中。
from openpyxl import Workbook
from openpyxl import load_workbook
def transferCols(refws,mx,refCol,newCol,header):
rmax = refws.max_row
for r in range(1, rmax+1):
if (r == 1):
mx[r-1][newCol-1] = header
else:
mx[r-1][newCol-1] = refws.cell(row = r, column = refCol).value
return
ref_wb = load_workbook("UESfull.xlsx", read_only= True)
ref_ws = ref_wb.active
rmax = ref_ws.max_row
matrix = [["fill" for col in range(30)] for row in range(rmax)]
print("step ", 1)
transferCols(ref_ws,matrix,1,1,"URL")
...
我只放了 print("step") 行来跟踪进度,但令人惊讶的是,它停在第 1 步!我只是不知道结构是否很差,或者 300k 单元对于 openpyxl 来说是否太多了。我什至还没有开始写我的put excel!提前致谢!
【问题讨论】:
-
如果您使用文档中的basic read-only example,它是否也无法打印任何内容?如果它是/是一个简单的 2D 表,我可能只是在 Microsoft Office 中保存为 CSV 并在 python 中逐行读取它
-
读完数据后打算做什么?您可能有
pandas的解决方案 -
嗨@Abbas,感谢参与!我真的被困在这里了。我需要读取一个大的 2D excel 表,清理数据,使所有条目都采用统一格式,然后保存。很简单,但资源密集?后续代码只是对 transferCols() 的多次调用。我认为阅读 Excel 并将其存储在本地 2D 矩阵中,同时在将其写入 Excel 之前对其进行编辑会更快。
-
我还应该说我的代码适用于精确源 Excel 的较小版本。只有当我在大型 Excel(格式和数据单元格相同)上运行它时,程序才会停止。
标签: excel python-3.x openpyxl