还是报这个错误AttributeError: property 'book' of 'OpenpyxlWriter' object has no setter
时间: 2023-11-13 13:03:01 浏览: 351
C#中Property和Attribute的区别实例详解
非常抱歉给您带来的困扰,我之前的回答仍然有误。根据您提供的错误信息,确实是因为 `pd.ExcelWriter` 对象的 `book` 属性没有设置方法引起的。
在 Pandas 中,`pd.ExcelWriter` 对象并没有提供直接设置 `book` 属性的方法。如果您想要操作 Excel 文件的工作簿对象,可以使用 openpyxl 库来实现。
以下是一个示例代码,展示如何使用 openpyxl 库来操作 Excel 文件的工作簿:
```python
import pandas as pd
from openpyxl import load_workbook
# 读取数据
df = pd.read_excel(r'E:\桌面\新格式表格\excel表格.xlsx', sheet_name='1月份', engine='openpyxl')
i = df.shape[0]
o = df.shape[1]
# 创建要追加的数据框
data = {'number': ['23'],
'name': [13],
'age': [16]
}
new_data = pd.DataFrame(data)
# 加载已存在的Excel工作簿
book = load_workbook(r'E:\桌面\新格式表格\excel表格.xlsx')
# 获取指定工作表
writer = pd.ExcelWriter(r'E:\桌面\新格式表格\excel表格.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
# 将数据追加到现有工作表
new_data.to_excel(writer, sheet_name='1月份', header=False, index=False, startrow=i+1, startcol=o)
# 保存并关闭文件
writer.save()
writer.close()
# 打印原始数据和追加的数据
print(df)
print(new_data)
```
这段代码中,我们首先读取了原始的 Excel 数据到一个数据框 `df` 中。然后,我们创建要追加的新数据框 `new_data`。接下来,我们加载现有的 Excel 工作簿,并使用 `load_workbook` 函数加载文件。然后,我们使用 `pd.ExcelWriter` 创建一个写入器,并将已存在的工作簿设置为写入器的属性。接着,我们使用 `to_excel` 方法将新数据追加到指定的工作表中。最后,我们保存并关闭文件。
请确保指定的工作表名字正确,并且在运行代码之前关闭 Excel 文件,以免发生冲突。
如果问题仍然存在,请提供完整的错误信息以便我更好地帮助您解决问题。非常抱歉给您带来的困扰。
阅读全文