Python哪个Excel库最好用?

我用Python处理Excel使用最多的库是XlsxWriter和Pandas,Pandas不用多说,很适合将Excel转为DataFrame格式来处理数据。

这里重点讲讲XlsxWriter,非常擅长写入Excel。它在github上有近4K的star,在众多Excel库中可能也是最好用最容易上手的,它支持创建、写入、公式、图表设计、可视化、格式处理等各种Excel操作。

XlsxWriter最好用的点在于它不依赖其他库或者Excel引擎,单纯靠Python标准库执行任务,所以安装简单、速度快、出错率低、环境适应性强。

而且XlsxWriter非常适合Excel大数据的写入,因为它有一种特殊的"常量内存"管理模式,可以一边写入新数据,一边删除内存的中旧数据,不会占用内存,因此可以支持超大数据量的处理。

安装XlsxWriter很简单,直接在命令行中输入:

复制代码
pip install XlsxWriter

由于没有依赖库,XlsxWriter安装非常快,安装好后,使用import导入便可以使用。

比如以下几行代码,可以轻松创建一个excel表,然后写入一列数据,并使用这列数据创建一个折线图,速度非常之快。

复制代码
import xlsxwriter

# 要输入的数据
data = [12,15,18,20,17,14]
# 创建工作簿和工作表
workbook = xlsxwriter.https://zhida.zhihu.com/search?content_id=746130047&content_type=Answer&match_order=1&q=Workbook&zhida_source=entity('示例.xlsx')
worksheet = workbook.add_worksheet()

# 写入数据
worksheet.write_column('A1', data)

# 创建新的折线图对象
chart = workbook.add_chart({'type': 'line'})
# 向图表添加数据系列
chart.add_series({'values': '=Sheet1!$A$1:$A$6'})
# 将图表插入工作表
worksheet.insert_chart('C1', chart)

# 关闭xlsx文件
workbook.close()

效果如下:

要学会XlsxWriter,需要知道XlsxWriter有3个基础对象。

Workbook(工作薄):用于创建Excel文件,通过方法xlsxwriter.Workbook()实现。

Worksheet(工作表):用于创建Excel中的某个sheet,通过workbook.add_worksheet()实现。

Format(格式化):用于设置单元格格式的方法和属性,比如:字体、颜色、图案、边框、对齐方式和数字格式等,通过workbook.add_format()实现。

比如以下案例,就解释了以上3个对象的使用方法,创建一个Excel表及其sheet,并写入A1单元数值和设置格式。

复制代码
import xlsxwriter
# 创建Excel
workbook = xlsxwriter.Workbook('set_format.xlsx')
# 创建sheet
worksheet = workbook.add_worksheet()

# 设置单元格格式
currency_format = workbook.add_format({
    'num_format': '$#,##0.00', # 数字格式
    'bold': True,             # 字体加粗
    'font_name': '微软雅黑',   # 设置字体名称
    'bg_color': 'orange'     # 设置单元格背景颜色为橙色
    })
worksheet.write('A1', 789.23, currency_format)

workbook.close()

可能你经常会用Pandas导出Excel,但Pandas对Excel的处理能力很有限,所以可以使用XlsxWriter作为引擎,导出格式更加丰富、有图表的Excel。

使用方法很简单

复制代码
import pandas as pd

# 创建df数据
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

# 使用XlsxWriter作为引擎,创建excel写入对象
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')

# 导出excel
df.to_excel(writer, sheet_name='Sheet1')

# 对excel对象进行各种操作
workbook = writer.book
worksheet = writer.sheets['Sales Data']
......

writer.close()

比如我用pandas处理一份上百万行的销售数据,最终输出时,使用XlsxWriter设计一份报表,有表有图,可以直接作为业务表使用。

因为XlsxWriter是将数据保存在内存中的,如果需要写入的数据量很大,连内存都扛不住了,XlsxWriter有专门的内存管理模式可以处理。

它的处理机制时,写入新的数据时,在内存中删除旧的数据,这样内存不会被一直占用,还能保证数据可以持续写入。

你可以在创建 Workbook 对象时设置constant_memory参数来启用内存管理模式

复制代码
workbook = xlsxwriter.Workbook('large_file.xlsx', 
{'constant_memory': True}) 

可以看到XlsxWriter非常的简单,但却很强大,搭配Pandas来用效果更好,最后放一个使用xlsxwriter做的商业化看板,一键导出,非常方便。

相关推荐
学传打活17 小时前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng1689 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心11 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552717 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552717 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝18 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552719 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552719 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552721 天前
Java实用类应用精讲
人工智能·1024程序员节
u01030552722 天前
Java I/O核心操作实战
人工智能·1024程序员节