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")
这是每次我运行代码时附加数据,数据也是从第2行开始的;为什么excel数据不是从(0,0)开始cell.My要求是更新从(0,0)
开始的数据
由于使用了追加,因此每次函数时都会追加数据 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)
以下是支持在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")
这是每次我运行代码时附加数据,数据也是从第2行开始的;为什么excel数据不是从(0,0)开始cell.My要求是更新从(0,0)
开始的数据
由于使用了追加,因此每次函数时都会追加数据 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)