⽤原⽣的⽅式操作Excel,Python玩转Excel神器xlsxwriter详
解!
来源:早起Python
本⽂就将介绍⼀个强⼤的库xlsxwriter。来学习如何⽤原⽣的⽅式操作Excel!
⾸先还是来简单了解下这三个库之间的区别
⽐较三者,你可能会觉得xlsxwriter这个库也太不⾏了吧?其实不是的,在写⼊这⽅⾯前两个库⽐不上它,它的精华在于写⼊(多张样式图表、图⽚、表格样式修改等)。话不多说,下⾯开始讲解!
简介
xlsxwriter是⽤于创建Excel XLSX⽂件的Python模块,可⽤于将⽂本、数字、公式和超链接写⼊Excel2007 + XLSX⽂件中的多个⼯作表。它⽀持格式化等功能。可以说除了Excel本⾝,就属这个功能最齐全了。
它的缺点就是不⽀持读取和修改,它只能创建新的⽂件,如果读者想完美读取功能的话,可以结合xlsxreader来实现,两者结合可谓真正完整的Excel+XLSX再现。
其次,它不⽀持XLS⽂件的写⼊,XLS⽂件是⼀种⼆进制格式的⽂件。如果读者想创建XLS格式⽂件的话可以参考xlwt模块。
安装与概览
安装很简单,没有什么特别要注意的,直接在命令⾏/终端中安装即可
pip install XlsxWriter
在正式讲解之前我们需要简单了解Xlsxwriter的基本流程如下
常⽤操作拆解
下⾯我将对操作Excel时常见的⼏个操作进⾏举例讲解
⼀、创建Excel⽂件
先导⼊模块⽽后使⽤Workbook()构造函数来创建⼀个新的⼯作簿对象。Workbook()接受⼀个⾮可选参数---我们创建⽂件的⽂件名。
import xlsxwriter
f = xlsxwriter.Workbook()
⼆、创建⼯作表
默认情况下,Excel⽂件中的⼯作表按代码执⾏顺序名称依次为Sheet1、Sheet2等。但是我们也可以指定⼀个名称,如上我们在函数内加⼊了Data。
worksheet1 = workbook.add_worksheet()
#worksheet2 = workbook.add_worksheet('Data')
三、写⼊单个数据
如果对单个单元格进⾏写⼊数据⽤如下语法:
worksheet.write(row, col, some_data)
注意的是在XlsxWriter中,row⾏和col列的索引为零也即⼯作表的第⼀个单元格A1为(0,0)
如果我们需要写⼊多⾏多列数据的话,可以⽤for循环。在这⾥举个例⼦呈现。
import xlsxwriter
workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet('早起Python')
#写⼊数据以元组套列表形式
data = (
['春天',20],
python怎么读取xls文件['夏天',30],
['秋天',25],
['冬天',10],
)
#设置初始的输⼊数据的位置
row = 0
col = 0
#for循环添加数据
for weather, tem in (data):
worksheet.write(row, col,weather)
worksheet.write(row, col + 1, tem)
row += 1
workbook.close()
效果如下:
四、写⼊⼀整⾏列数据
worksheet.write_row(“A1”,data,bold)
worksheet.write_column(“A1”,data,bold)
第⼀⾏代码为按⾏插⼊且从A1单元格开始,data为要写⼊的数据(格式为⼀个列表),bold为单元格样式。第⼆⾏代码与之不同的是按列插⼊。
五、设置单元格样式
bold = f.add_format({
'bold':  True,  # 字体加粗
'border': 1,  # 单元格边框宽度
'align': 'left',  # ⽔平对齐⽅式
'valign': 'vcenter',  # 垂直对齐⽅式
'fg_color': '#F4B084',  # 单元格背景颜⾊
'text_wrap': True,  # 是否⾃动换⾏
})
在上⽅的写⼊⾏列数据中我们⽤到的bold参数,这是⼀个调节单元格样式的参数,常⽤的格式如上代码。
六、插⼊图⽚
插⼊图⽚是xlsxwriter瞩⽬的地⽅,接下来将分为⼩部分详细讲解
worksheet.insert_image('A1','绝对路径')
第⼀个参数是你要指定哪个单元格插⼊图⽚,第⼆个参数是存放图⽚的绝对路径。
6.1 插⼊超链接
worksheet.write_url(row, col, "internal:%s!A1" % ("链接对象"), string="链接显⽰名字")
row和col参数都是设置位置信息的。
6.2 插⼊图表
插⼊图表是xlsxwriter模块的最⼤闪光点,这⾥我将详细介绍插⼊图表的代码及其解释。
⾸先,先熟悉插⼊图表的代码
chart = workbook.add_chart({'type': 'column','subtype': 'stacked'})
workbook.add_chartsheet()函数是最经典的插⼊图表函数,字典⾥的第⼀个键type参数指的是放⼊的图表类型。⽽第⼆个键指的是某些图表类型中的图表⼦类型。
⽀持的图表类型有以下:
设置了图表类型接下来就是插⼊数据,插⼊数据我们⽤chart.add_series(options)函数。
这⾥的options是以字典形式的图表数据,在Excel中图表系列是⼀组信息(值、轴标签、格式等)。
接下来就是将创建好的chart对象放⼊倒Excel表格中
worksheet.insert_chart('A7', chart)
insert_chart()函数是将图表插⼊到⼯作表指定的位置,第⼀个参数为单元格位置信息,第⼆个参数为选定的图表。
我们⽤⼀个例⼦将上述三个函数结合,并画⼀个条形图
import xlsxwriter
workbook = xlsxwriter.Workbook('条形图.xlsx')
worksheet = workbook.add_worksheet('Zaoqi')  #如果出现没图像显⽰就删除⾥⾯的参数
chart = workbook.add_chart({'type': 'column'})
data = [
[3, 6, 9, 12, 15],
[2, 4, 6, 8, 10],
[1, 2, 3, 4, 5],
]
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})
worksheet.insert_chart('A7', chart)
workbook.close()
效果如下:
上述例⼦中的插⼊数据我们运⽤了和第⼀个例⼦不⼀样的for循环插⼊,运⽤的是worksheet.write_column()对整⾏整列进⾏数据添加。
注意:如果表格⾥的图表没有显⽰则在这代码⾥改worksheet = workbook.add_worksheet(),删除⾥⾯的参数,原因是Excel的版本问题。
在chart.add_series()函数中我们⽤到的字典类型格式为:{'values': '=⼯作表名!$列对应字母$⾏对应数字:$列对应字母$⾏对应数字'}。在这⾥,列对应字母和⾏对应数字可以看图⽚中,我们需要的是ABC三列中的1-5⾏数值,故我们这⾥引⽤3个添加函数。
6.3 设置x轴与y轴属性

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。