写入excel文件的ExcelWriter、openpyxl、xlsxwriter


最近在 保存写入文件上进行了些许的研究,逛了一圈,记录一下。

总的来说,单纯的ExcelWriter是负责写入xlsx的模块,但也仅仅是写进去,而openpyxl和xlsxwriter是可以对xlsx文件进行格式编辑的(其中xlsxwriter不能对已有的文件进行编辑),这也是为什么Excelwriter里面需要有一个engine的,这样的话,就可以结合三者的优势了

在不设置engine的情况下,默认engine是xlsxwriter

1. 基础ExcelWriter

一般来说,建模的话只需要直接存储然后修改即可,这里直接存储的话可能会遇到一个问题,就是输出的excel为空。原因可能有两个:

  • 一是数据本身的索引是跳跃的,可以通过reset_index()进行调整
  • 二是按照一般的写入方式必须在后面加上writer.save()和writer.close(),否则数据就一直在数据流中,不会真正的保存到文件中去。还有一种方法就是with…as…魔法函数,可以帮助我们操作上下文管理器(context manager),自动分配并且释放资源,相当于代替了writer.save()和writer.close()
# 普通
import pandas as pd

data=pd.DataFrame({
    'name':[1,2,3],
    'age':[2,3,4]
})
writer=pd.ExcelWriter('hh.xlsx')
data.to_excel(writer,sheet_name='hh')
writer.save()
writer.close()

# with as
df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
with pd.ExcelWriter("path_to_file.xlsx") as writer:
    df1.to_excel(writer, sheet_name="Sheet1")  
    df2.to_excel(writer, sheet_name="Sheet2")  

2. engine=‘openpyxl’

该引擎可以对已有的excel文件进行追加操作格式操作

import openpyxl
def daochu(data,file):
	#建立工作簿
    writer=pd.ExcelWriter(file,engine='openpyxl')
    # 写入文件数据,这里可以设置sheetname,也可以不设置
    data.to_excel(writer,index=False)
    # 工作表
    worksheets=writer.sheets
    # 对第一张表进行操作
    worksheet1=worksheets['Sheet1']
    # 设置格式
    worksheet1.insert_rows(idx=1,amount=1) # 插入行
    cell_0 = worksheet1.cell(1,1) # 找到单元格的位置
    cell_0.value = '59所EMS邮寄清单' # 设置这个单元格的值
    cell_0.alignment = Alignment(horizontal='center', vertical='distributed') # 设置对齐方式,水平对齐以及垂直对齐方式
    cell_0.font = Font(name="微软雅黑") #设置字体
    worksheet1.merge_cells('A1:E1') # 合并单元格

3. openpyxl模块

包括创建文件写内容、读入文件追加内容

from openpyxl import load_workbook
#追加
wb = load_workbook('files/p1.xlsx') #读入工作簿
sheet = wb.worksheets[0] # 工作表
# 找到单元格,并修改单元格的内容
cell = sheet.cell(1, 1)
cell.value = "新的开始"
# 将excel文件保存到p2.xlsx文件中
wb.save("files/p2.xlsx") #保存工作簿


# 创建excel且默认会创建一个sheet(名称为Sheet)
wb = workbook.Workbook() #创建工作簿
sheet = wb.worksheets[0] # 或 sheet = wb["Sheet"]
# 找到单元格,并修改单元格的内容
cell = sheet.cell(1, 1)
cell.value = "新的开始"
# 将excel文件保存到p2.xlsx文件中
wb.save("files/p2.xlsx")
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值