Python openpyxl dataframe数据写入excel并清空sheet内容

Python openpyxl dataframe data writing in excel and clearing the sheet content

以下是支持在xlsx中追加数据的代码sheet。

import pandas as pd from openpyxl import load_workbook from openpyxl.utils.dataframe
import dataframe_to_rows

wb = load_workbook('./test.xlsx')
ws = wb['Sheet1'] 
df = pd.DataFrame({'Data': [11, 20, 30, 20, 15, 30, 45]}) 
for r in dataframe_to_rows(df):
        ws.append(r) 
wb.save("test.xlsx")
  1. 这是每次我运行代码时附加数据,数据也是从第2行开始的;为什么excel数据不是从(0,0)开始cell.My要求是更新从(0,0)

  2. 开始的数据
  3. 由于使用了追加,因此每次函数时都会追加数据 called.My 要求是清除此 sheet(擦除此 [=32= 的内容]1单独)并添加从0,0开始的数据帧数据cells.W hat应该是实现1和2要求的代码。 (我不想在此操作期间覆盖sheet2和其他sheet内容)

非常感谢任何帮助。

Why the excel data not starting from (0,0) cell.

因为工作表class的the .append method:

Appends a group of values at the bottom of the current sheet.

换句话说,此方法找到下一个 available/empty 行,并将数据转储到 那里 ,这是有道理的。您还期望 append 方法如何工作? list.append 不写入项目 0,它 将新成员添加到列表 。与 worksheet.append 方法相同。

为了先清除现有单元格,请尝试:

似乎 dataframe_to_rows 调用添加了一个额外的空行,这就是为什么您会看到一个额外的行

>>> df
   Data
0    11
1    20
2    30
3    20
4    15
5    30
6    45
>>> 
>>> print( [*dataframe_to_rows(df)] )
[[None, 'Data'], FrozenList([None]), [0, 11], [1, 20], [2, 30], [3, 20], [4, 15], [5, 30], [6, 45]]
>>> 

您确定要使用 openpyxl 吗?如果没有,您可以按以下方式轻松完成

>>> fname = './test.xlsx'
>>> sheet = 'Sheet2'
>>> with ExcelWriter(fname, engine='openpyxl') as writer:
...     writer.book = load_workbook(fname)
...     if sheet in writer.book:
...         del writer.book[sheet]
...     df.to_excel(writer, sheet)