NORTH125 2023-04-06 12:40 采纳率: 0%
浏览 1439

解决不了OpenpyxlWriter' object has no setter问题

代码如下,我刚刚开始学习python,给自己家店写了一个程序用来将一张表格上的总库存数据转移到另一张表上,对应每个商品名称,但是总在这里报错,反复尝试都解决不了问题。

import pandas as pd
from openpyxl import Workbook, load_workbook
from datetime import datetime

# 获取当前日期
today = datetime.today().strftime('%Y%m%d')

# 创建ExcelWriter对象
writer = pd.ExcelWriter(rf'C:\Users\elvis\Desktop\表格A{today}_updated.xlsx', engine='openpyxl')

# 新建一个空的工作簿
book = Workbook()
writer.book = book

# 将原有表格的格式信息传给ExcelWriter对象
for sheetname in book.sheetnames:
    writer.sheets[sheetname] = book[sheetname]

# 读取原有的供货清单表格
df_supply = pd.read_excel(r'C:\Users\elvis\Desktop\表格A.xlsx')

# 读取包含总库存的表格
df_stock = pd.read_excel(r'C:\Users\elvis\Desktop\表格B.xlsx')

# 将总库存覆盖原有的“总库存”列
df_supply['总库存'] = df_stock['总库存']

for sheetname in writer.sheets:
    # 将供货清单表格与总库存表格按商品名称合并
    df = pd.merge(df_supply, df_stock, on='商品名称', how='left')
    # 用总库存覆盖“总库存”列
    df['总库存'] = df['总库存_y']
    # 在excel表格中新增供货清单更新结果
    df.to_excel(writer, sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index=False, header=False)

writer.save()

报错内容如下:
C:\Users\elvis\venv\Scripts\python.exe E:\pythonproject\venv\迭代1.py 
Traceback (most recent call last):
  File "E:\pythonproject\venv\迭代1.py", line 13, in <module>
    writer.book = book
    ^^^^^^^^^^^
AttributeError: property 'book' of 'OpenpyxlWriter' object has no setter

感谢帮助,真的很头痛。

  • 写回答

4条回答 默认 最新

  • tangchh 2024-03-26 11:26
    关注

    我把
    writer.book = book
    改成了
    writer._book = book
    还有
    writer.save()
    改成了
    writer._save()
    好像就不报错了。试试看

    评论

报告相同问题?

问题事件

  • 创建了问题 4月6日