xlsxwriter生成Excel文件

本文介绍了如何使用Python的xlsxwriter库来操作xlsx文件,包括写入头部标题和数据,以及创建和配置图表。xlsxwriter支持新建xlsx文件,但不支持文件追加和读取。
部署运行你感兴趣的模型镜像

操作xls

xlrd和xlwt,以及xlutils足以满足对xls文件的读、写、追加功能。

但是办公文件的格式,不是xls,还有xlsx,还有我们很少见的xlsm等。

操作xlsx

xlsx是xls的升级版,xls是老版本的办公软件所支持的文件格式,且劣势也比较明显,当文件数据超过65536行和256列,使用xls则会导致数据截断。

xlsx的支持则更好,同样多的数据,xlsx格式的文件体积小,支持的操作更多,软件打开和动作执行的速度会更快。

本次介绍的库是xlsxwriter和openpyxl,这两个库均支持操作xlsx文件格式。

掌握xlsx的读写操作,也是大势所趋。

写入头部标题

首先是学习xlsxwriter库,安装命令:pip install xlsxwriter

第一步先导入库,以及打开一个xlsx文件:

import xlsxwriter, random
​
wb = xlsxwriter.Workbook('xlsxwriter插入数据.xlsx')

xlsx和xls的操作都是一致的,单个文件,里面可以添加多个sheet。打开文件后,需要新建第一个sheet。

worksheet1 = wb.add_worksheet('代码操作记录')

有了sheet,开始准备标题和数据并写入文件。首先是头部标题:

headings = ['日期','数据1','数据2']
worksheet1.write_row('A1',headings)

标题保存在headings中,列表格式,然后逐个写入到sheet中。

但是这里的写入操作,不是行数 列数 数据格式的单个数据写入操作,而是直接写入一行或者一列。这里用的是写入wtier_row,写入一行,从A1开始,然后A2 A3,一直往后写。

写入数据内容

接下来写入数据,首先是创造数据,结构也是列表格式,然后使用写入列的操作,将数据整行的写入。

data = [
    ['2019-1','2019-2','2019-3','2019-4','2019-5','2019-6','2019-7','2019-8','2019-9','2019-10','2019-11','2019-12',],
    [random.randint(1,100) for i in range(12)],
    [random.randint(1,100) for i in range(12)],
] 
worksheet1.write_column('A2',data[0])
worksheet1.write_column('B2',data[1])
worksheet1.write_column('C2',data[2])

这里的数据使用了random库随机设置,所以第一块代码中,有random的导入。

data是列表,里面有三个列表,分别是日期和两类数据,结合头部标题,写入的数据,是三列,所以用的是write_column函数。

写完之后,直接关闭即可。

wb.close()

用Office打开文件,如下图:

数据写入完毕。

新建图表对象 

数据写好了,但是Excel不仅仅只是存放数据的,也可以生成图表。下面我们就学习下如何生成图表。

图表的数据,直接使用数据1和数据2的内容,并且前半部分,数据的写入就是上面的代码。

数据写入之后,不关闭,然后继续操作,生成一个图表信息。

第一部分,折线图表的定义:

chart_col = workbook.add_chart({'type':'line'})

有了图表对象,下面就是往里加入数据。

图表数据配置

这里的数据有两条,一个是数据1,一个是数据2,所以图表添加数据的代码如下:

chart_col.add_series(
    {
        'name':'=sheet1!$B$1',
        'categories':'=sheet1!$A$2:$A$7',
        'values':   '=sheet1!$B$2:$B$7',
        'line': {'color': 'blue'},
    }
)
chart_col.add_series(
    {
        'name':'=sheet1!$C$1',
        'categories':'=sheet1!$A$2:$A$7',
        'values':   '=sheet1!$C$2:$C$7',
        'line': {'color': 'green'},
    }
)

有两条数据,所以添加了两次。

数据有四项,数据名、具体值对应的横坐标categories、具体值对应的纵坐标values、折线颜色,其中取值方式,直接是使用sheet的坐标形式,例如name是B1和B2,categories都是A2-A7,值分别是B2-B7和C2-C7。

完成图表

数据添加之后,在设置下坐标的相关信息,就是标题、x轴、y轴的名字,以及图表位置和大小,代码如下:

chart_col.set_title({'name':'虚假数据折线图'})
chart_col.set_x_axis({'name':"横坐标"})
chart_col.set_y_axis({'name':'纵坐标'})          #设置图表表头及坐标轴
​
​
worksheet.insert_chart('D2',chart_col,{'x_offset':25,'y_offset':10})   #放置图表位置
​
wb.close()

图表的位置和大小,是根据左上角的起始表格和x和y的偏移计算的。

代码中是从D2做左上角起始,然后x和y分别便宜25和10个单位,得到了图片的最终大小。最后关闭wb。

下面是最后的Excel文件样式:

以上就是xlsxwriter的使用示例,有图的加入,比较有趣。但是xlsxwriter只能创建新的文件,不能追加和读取。 

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G.spring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值