我使用pandas以下列方式写入excel文件:
import pandas
writer = pandas.ExcelWriter('Masterfile.xlsx')
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Run Code Online (Sandbox Code Playgroud)
Masterfile.xlsx已包含许多不同的选项卡.
Pandas正确写入"Main"表,不幸的是它还删除了所有其他选项卡.
从文档中尝试此示例
writer = ExcelWriter('output.xlsx')
df1.to_excel(writer,'Sheet1')
df2.to_excel(writer,'Sheet2')
writer.save()
Run Code Online (Sandbox Code Playgroud)
我发现我无法写入带有错误的excel文件
TypeError: copy() got an unexpected keyword argument 'font'
Run Code Online (Sandbox Code Playgroud)
我在Mac专业版上使用Panda 0.16.
编辑:写入xls文件工作得很好.我不坚持使用xlsx文件,只是想知道为什么它不起作用.
我有一段时间前的代码,我将其重新用于新任务。任务是将一个新的 DataFrame 写入一个新的工作表,写入一个现有的 excel 文件。但是有一部分代码我不明白,但它只是使代码“工作”。
在职的:
from openpyxl import load_workbook
import pandas as pd
file = r'YOUR_PATH_TO_EXCEL_HERE'
df1 = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
book = load_workbook(file)
writer = pd.ExcelWriter(file, engine='openpyxl')
writer.book = book # <---------------------------- piece i do not understand
df1.to_excel(writer, sheet_name='New', index=None)
writer.save()
Run Code Online (Sandbox Code Playgroud)
的小线writer.book=book让我难住了。如果没有一段代码,Excel文件将删除所有其它片材,除了在使用的片材sheetname=中的参数df1.to_excel。
我看着xlsxwriter的文档以及openpyxl的,但似乎无法弄清楚,为什么这条线给我我预期的输出。有任何想法吗?
编辑:我相信这篇文章是我最初想法的来源。
我有以下代码,我正在尝试将数据框写入 Excel 文件的“现有”工作表(此处称为 test.xlsx)。Sheet3 是我要放置数据的目标工作表,我不想用新工作表替换整个工作表。
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets) # *I am not sure what is happening in this line*
df.to_excel(writer,"Sheet3",startcol=0, startrow=20)
Run Code Online (Sandbox Code Playgroud)
当我逐行运行代码时,最后一行出现此错误:
AttributeError: 'Workbook' 对象没有属性 'add_worksheet'。现在为什么当我不尝试添加工作表时会看到此错误?
注意:我知道这个类似的问题Python How to use ExcelWriter to write into an existing worksheet但它对我不起作用,我也无法评论该帖子。