【问题标题】:Edit excel file with python用python编辑excel文件
【发布时间】:2021-09-15 15:16:09
【问题描述】:

我尝试编辑现有的 Excel 文件。我的文件是test.xlsx,有两张表是AllSummary。下一步:

 import pandas as pd

 df = pd.read_csv('abc.csv') 
 number_rows = len(df.index) 
 writer = pd.ExcelWriter('test.xlsx') 
 df.to_excel(writer, sheet_name = 'All',startrow = number_rows) 
 writer.save()

我想编辑(将数据附加到工作表名称All)但是当运行此代码时,它似乎是工作表名称SummaryAll 已删除,它创建了一个新工作表名称All 并写入我的新数据给它。那么,如何在不删除现有数据的情况下将数据附加到 Excel 表?谢谢。

【问题讨论】:

  • 你需要先读取你的excel数据。您所做的就是用一个全新的文件来清除现有的 excel 文件。这些调用的 panda 文档涵盖了这一点。
  • @pvg 如果我没有从 csv 读取数据帧,则相同的结果,从 excel 文件本身读取数据帧`df = pd.read_excel('test.xlsx')` 替换第 2 行
  • 你应该阅读文档和/或谷歌以获取一些例子,如果你随机更改代码以希望它神奇地工作,它是行不通的。

标签: python excel pandas


【解决方案1】:

您可以将openpyxl 引擎与 startrow 参数一起使用。 你还需要;

  • 先读取 csv 到 df
  • 使用openpyxl打开xlsx作为工作簿
  • 使用openpyxl 作为引擎创建写入器对象
  • 将工作表添加到编写器对象
  • 将 df 添加到 writer 对象

您的代码(已修改):

import pandas as pd
from openpyxl import load_workbook

df = pd.read_csv('abc.csv')
number_rows = len(df.index) 
book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl') 
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, sheet_name = 'All',startrow = number_rows) 
writer.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 2018-01-08
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多