亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 openpyxl 中使用 add_table() 方法會損壞現有的 excel 文件

在 openpyxl 中使用 add_table() 方法會損壞現有的 excel 文件

弒天下 2023-04-11 15:38:42
我有一個名為“File.xlsx”的現有 excel 文件和一個名為“MySheet”的工作表MySheet中的數據目前是一個范圍,我想打開excel文件,將MySheet中的數據轉換成excel表格。我能夠成功地完成這部分,但是當我打開 excel 文件時,我收到一條錯誤消息:已修復的記錄:來自 /xl/tables/table1.xml 部分的表(表)該腳本可用于創建表格,但我想避免 excel 文件出現不可讀錯誤。我正在使用的腳本在這里:from openpyxl.worksheet.table import Tablefrom openpyxl.utils import get_column_letterfile_name = "File.xlsx"wb = load_workbook(file_name)ws = wb['MySheet']max_row = ws.max_rowmax_column = ws.max_columntable = Table(displayName="FailureData", ref="A1:" + get_column_letter(max_column) + str(max_row))ws.add_table(table)wb.save(file_name)wb.close()
查看完整描述

3 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

在我的例子中,當 2 個標頭字段具有相同的名稱時會發生錯誤。解決方案是通過在每次重復時遞增 1 來確保標頭中具有唯一的字段名稱:


f = ["Ford", "Volvo", "BMW", "Ford", "Ford"]

print(f)

>>['Ford', 'Volvo', 'BMW', 'Ford', 'Ford']


fields_out = [(x if i == f.index(x) else x + str(f.count(x) - f[i + 1:].count(x))) for i, x in enumerate(f)]

print(fields_out)

>>['Ford', 'Volvo', 'BMW', 'Ford2', 'Ford3']

對于通過界面進行的相同操作,Excel 會修改重復字段的名稱。


openpyxl 版本 3.0.5


查看完整回答
反對 回復 2023-04-11
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

我知道這已經有一段時間了,但對于遇到此問題的其他人來說,我遇到了類似的問題。該表有兩列同名。我從 df 中刪除了重復的列并解決了問題。



查看完整回答
反對 回復 2023-04-11
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

我想到了。這似乎是舊版 openpyxl 的問題,我使用的是 2.6.1 版。我更新到最新版本 3.0.4,錯誤不再出現。



查看完整回答
反對 回復 2023-04-11
  • 3 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號