前言
对于有些已经存在的Excel表,我们只需要添加新的数据即可,不需要overwrite覆盖写入.那么可以利用openpyxl包实现这种需求。
安装openpyxl
pip install openpyxl
demo
<1>第一种方式
import openpyxl
from openpyxl import load_workbook
import pandas as pd
df = pd.DataFrame({'A': 1, 'B': 2})
file = r"myfile.xlsx"
wb = load_workbook(file)
ws = wb.worksheets[0]
values_list = df.values.tolist()
for i in range(values_list):
ws.append(i)
wb.save(file)
wb.close()
<2>第二种方式
与<1>类似,但是我们使用openpyxl.utils.dataframe模块中自带的dataframe_to_rows(函数实现dataframe转list。
import pandas as pd
from openpyxl import load_workbook
from openpyxl.utils import dataframe
file = r"myfile.xlsx"
df = pd.DataFrame({'A': 1, 'B': 2})
wb = load_workbook(file)
ws = wb.worksheets[0]
for row in dataframe.dataframe_to_rows(df ,header=False, index=False):
ws.append(row)
wb.save(file)
wb.close()
这里主要用到的是openpyxl的worksheet append方法,
因为参数row必须为列表格式,所以我们将dataframe进行了转换。
dataframe.values.tolist(), dataframe.dataframe_to_rows(dataframe, header=False, index=False)这2种方式都能够达到我们想要的目的。
户外题
如果是向.csv文件中追加写入数据的话,直接使用dataframe对象的to_csv()函数即可,
```
df.to_csv(path_or_buf="../data/outputs/aaa.csv",
mode="a",
header=False,
index=False)
mode参数决定是覆盖写入,还是追加写入。'w'是覆盖写入,'a'是追加写入
```
虽然dataframe对象也有to_excel()函数,但是to_excel()函数没有mode参数,所以不能追加写入数据。
所以当你要向xlsx的文件中追加写入数据的时候,用openpyxl包就可以了。