def test(sheet, row=2):
writer = pd.ExcelWriter("testing.xlsx", engine='openpyxl')
df1 = pd.DataFrame(['Title'], index=[0])
df2 = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'],
'income': [40000, 50000, 42000]})
df1.to_excel(writer, sheet, startrow=0, startcol=0, header=None, \
index=False)
df2.to_excel(writer, sheet, startrow=row, index=False)
writer.save()
writer.close()
test('aaa')
现在,这个小函数创建了一个Excel工作表
说明:
假设Excel工作表存在。我想用下面的代码在现有行的下面写一些东西
In [1]: import pandas as pd
In [2]: writer = pd.ExcelWriter("testing.xlsx", engine='openpyxl')
In [4]: from openpyxl import load_workbook
In [5]: book = load_workbook("testing.xlsx")
In [6]: df3 = pd.DataFrame({'amount': ['Chest', 'Bras', 'Braa'],
...: 'income': [40000, 50000, 42000]})
...:
In [8]: writer.book = book
In [9]: ws = book.get_sheet_by_name('aaa')
In [10]: writer.book
Out[10]: <openpyxl.workbook.workbook.Workbook at 0x7f9add4e3048>
In [12]: writer.book.sheetnames
Out[12]: ['aaa']
In [13]: row = ws.max_row
In [14]: row
Out[14]: 6
In [15]: df3.to_excel(writer, "aaa", startrow=row + 2, index=False)
In [16]: writer.save()
这个代码几乎按照我想要的方式工作。它创建一个新的工作表aaa1
,并将df
的内容按正常情况放在第8行。我希望aaa1
的内容低于aaa
的内容,而不是创建新的工作表aaa1
。我怎样才能修复它,使其正常工作
不幸的是,如果您仅使用pandas.DataFrame.to_excel,则无法实现此功能。如果你愿意在第二部分中使用openpyxl,我有一个解决方案。我使用Pandas样式来格式化单元格,格式与第一部分的格式相同
对于所需的输出:
相关问题 更多 >
编程相关推荐