【问题标题】:Python not appending data with pandas in Excel WorkbookPython不在Excel工作簿中使用熊猫附加数据
【发布时间】:2020-06-27 09:49:32
【问题描述】:

我正在编写一个 python 程序来从三个不同的 Excel 工作簿中获取数据,并将其附加到第四个工作簿中的不同工作表中,其中包含预先存在的数据。虽然当我运行代码时没有错误并且 excel 文件的修改日期正在更改,但数据实际上并没有附加到工作簿中。请帮帮我:

import pandas as pd
from openpyxl import load_workbook

#reading all three ticket excel sheets
df1 = pd.read_excel("sheet a.xlsx")
df2 = pd.read_excel("sheet b.xlsx")
df3 = pd.read_excel("sheet c.xlsx")

#Creating Panadas Excel writer using xlsxwriter as engine
writer = pd.ExcelWriter(r"main_excel.xlsx", engine = "openpyxl")

writer.book = load_workbook(r"main_excel.xlsx")
writer.sheets = {ws.title: ws for ws in writer.book.worksheets}

#reading existing file
reader = pd.read_excel(r"main_excel.xlsx")

#converting dataframes to xlsxwriter excel object
df1.to_excel(writer, sheet_name ="sheet a", index = False, header = False,startrow=len(reader)+1)
df2.to_excel(writer, sheet_name ="sheet b", index = False, header = False,startrow=len(reader)+1)
df3.to_excel(writer, sheet_name ="sheet c", index = False, header = False,startrow=len(reader)+1)

writer.close()

工作表 a、b、c 与工作表 d 中的工作表同名。

【问题讨论】:

  • 我忘了在问题中提到 writer.save()。它存在于程序中

标签: python excel pandas openpyxl


【解决方案1】:

所以你的代码可以在我的系统上运行。

它首先提取每个 excel 文件的第一张工作表,然后将其作为新工作表附加到 main_excel.xlsx 中,但在每个新工作表的顶部有 len(reader)+1 空白行,其中 reader 是第一个工作表main_excel.xlsx 和 len(reader) 是该工作表中非空白行的数量。这就是你想要的吗?

如果您不想要空白行,您可以跳过读取现有文件并从.to_excel(...) 中删除startrow 参数。

您说工作表 a、b、c 与工作表 d 中的工作表具有相同的名称,在这种情况下,main_excel.xlsx 中的“工作表 a”到“工作表 c”将被覆盖。

【讨论】:

  • 我这样重新检查并修改了代码:sheets = writer.book.sheetnames reader1 = pd.read_excel(r"main_excel.xlsx", "sheet a") reader2 = pd.read_excel(r"main_excel.xlsx", "sheet b") reader3 = pd.read_excel(r"main_excel.xlsx", "sheet c") df1.to_excel(writer, sheet_name =sheets[0], index = False, header = False,startrow=len(reader1)+1) df2.to_excel(writer, sheet_name =sheets[2], index = False, header = False,startrow=len(reader2)+1) df3.to_excel(writer, sheet_name =sheets[4], index = False, header = False,startrow=len(reader3)+1) writer.save() writer.close() Thanks
猜你喜欢
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 2018-05-24
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
相关资源
最近更新 更多