[英]openpyxl only reads first cell
我收到了一個在另一台計算機上創建的 XLSX 文件,該文件無法使用pandas.read_excel(filename,engine='openpyxl',sheet_name=None)
正確打開。 有一個警告Workbook contains no default style, apply openpyxl's default
,返回的對象是空數據框,只有第一列名稱被導入,每個工作表都有一個空索引。
然后我通過以下方式直接使用 openpyxl:
from openpyxl import load_workbook
wb = load_workbook(filename,read_only=True)
ws = wb['First Sheet']
for row in ws.rows:
for cell in row:
print(cell.value)
# first_col_header
ws.calculate_dimension(force=True)
# 'A1:A1'
print(ws['A1'].value)
# first_col_header
print(ws['B1'].value)
# second_col_header
print(ws['C1'].value)
# third_col_header
print(ws['A2'].value)
# first_val
print(ws['B2'].value)
# sec_val
print(ws['C2'].value)
# val_3
calculate_dimension()
僅拉入第一個單元格,但我能夠從其他單元格獲取值。
我正在考慮手動迭代以查找維度,但訪問單元格似乎具有線性時序會很慢:
%%time
ws['A1'].value # 5 ms
ws['A10'].value # 50 ms
ws['A100'].value # 250 ms
ws['A1000'].value # 2.3 s
ws['A10000'].value # 22 s
我找到的唯一解決方法是,如果我打開文件並自己保存,pandas 可以導入它。 問題是我有很多文件,有些文件很大,無法通過每個 go 手動保存。
我可以做些什么來完成這項工作嗎?
過去,我們遇到過這種警告/行為,其中一些 Excel 生成了 Apache POI。 正如查理克拉克和你評論的那樣,這可以通過 openpyxl 的工作表 object 上的reset_dimensions()方法來解決。
關於我評論的這個Apache POI行為的更多信息可以在這里找到:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.