pra*_*ant 3 python excel pandas openpyxl
我想用 Pandas 数据框覆盖 Excel 文件中的现有工作表,但不希望在同一文件的其他工作表中进行任何更改。这是如何实现的。我尝试了下面的代码,但不是覆盖,而是将数据附加到“Sheet2”中。
import pandas as pd
from openpyxl import load_workbook
book = load_workbook('sample.xlsx')
writer = pd.ExcelWriter('sample.xlsx', engine = 'openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, 'sheet2', index = False)
writer.save()
Run Code Online (Sandbox Code Playgroud)
Par*_*jan 14
我没有找到除此之外的任何其他选择,这对您来说是一个快速的解决方案。
我相信仍然没有直接的方法可以做到这一点,如果我错了,请纠正我。这就是我们需要使用这种合乎逻辑的方式的原因。
import pandas as pd
def write_excel(filename,sheetname,dataframe):
with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
workBook = writer.book
try:
workBook.remove(workBook[sheetname])
except:
print("Worksheet does not exist")
finally:
dataframe.to_excel(writer, sheet_name=sheetname,index=False)
writer.save()
df = pd.DataFrame({'Col1':[1,2,3,4,5,6], 'col2':['foo','bar','foobar','barfoo','foofoo','barbar']})
write_excel('PRODUCT.xlsx','PRODUCTS',df)
Run Code Online (Sandbox Code Playgroud)
如果您觉得这有帮助,请告诉我,如果您需要任何其他更好的解决方案,请告诉我。
小智 11
类似于 Gavaert 的答案...对于 Pandas 1.3.5,添加 'if_sheet_exists="replace"' 选项:
import pandas as pd
with pd.ExcelWriter("file.xlsx", engine="openpyxl", mode="a", if_sheet_exists="replace") as writer:
df.to_excel(writer, 'Logs', index=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7703 次 |
| 最近记录: |