Python xlsxwriter模块核心功能与图表绘制详解

Mason
Mason
发布时间:2026-10-15 | 4人浏览过
原创

本文详细介绍Python中xlsxwriter模块的核心用法,涵盖工作簿与工作表的创建、单元格格式设置(如加粗、颜色)、行列宽高调整,以及数据写入方法。重点讲解chart类如何创建柱状图、饼图等八种常见图表,并通过完整代码示例演示从数据准备到图表插入的全流程,帮助开发者高效生成Excel报表。

1. workbook类

add_worksheet

该方法用于向工作簿中添加一个新的工作表,参数sheetname指定工作表名称,若未提供则默认为'sheet1'。例如:


worksheet = workbook.add_worksheet()
worksheet = workbook.add_worksheet('测试详情')

add_format

此方法用于在指定工作表中创建一个新的格式对象,以便对单元格进行样式格式化。


bold = workbook.add_format({
  'bold': 1,       #字体加粗
  'fg_color': 'green',  #单元格背景颜色
  'align': 'center',   #对齐方式
  'valign': 'vcenter',  #字体对齐方式
})

add_chart

该方法用于在工作表中创建一个图表对象,其内部通过调用insert_chart()方法来实现渲染,接收的参数类型为dict。


chart1 = workbook.add_chart({'type':'column'}) #选择竖状图

设置sheet表单元格的行高和列宽

set_row(row, height)方法,用于设定指定行单元格的行高。

参数说明:row为指定行的位置,起始下标从0开始;height为float类型,用于设定行高,单位是像素。

set_column(first_col, last_col, width)方法,用于设置单列或多列单元格的列宽。

参数说明:first_col为整型,指定开始列的位置,起始下标从0开始;last_col为整型,指定结束列的位置,起始下标从0开始;width为float类型,用于设置列宽。

此外,还可以使用set_column("first_col:last_col", width)方法,其中first_col和last_col使用英文字母表示列名,起始列为A。


# 设置sheet表单元格列宽
ws.set_column(0,3,40) #设定第1到4列的列宽为40
ws.set_column("A:A", 40) #设定A列列宽为40
ws.set_column("B:D", 15) #设定B、C、D三列的列宽为15
ws.set_column("E:F", 50) #设定E、F列的列宽为50

#设置sheet表单元格行高
ws.set_row(0,40) #设置第一行的高度为40

向单元格中写入内容:write

write(row, col, data,cell_format)方法:用于将普通数据写入指定单元格,参数分别代表行标、列标、内容以及可选的单元格格式。


write.string():写入字符串类型数据
wirte_number():写入数字型数据
write_blank():写入空类型数据
write_formula():写入公式型数据
write_datetime():写入日期型数据
wirte_boolean():写入逻辑型数据
write_url():写入超链接型数据

# 示例:
ws.write(1,1,"python操作excel") #在单元格1行1列中写入:“python操作excel”

2. chart类

chart类用于实现图表组件,需通过workbook对象的add_chart方法创建实例。


chart1 = workbook.add_chart({'type':'column'}) #选择竖状图

该模块支持以下常见的图表样式:

  • area:面积样式的图表
  • bar:条形图
  • column:柱状图
  • line:线条样式的图表
  • pie:饼形图
  • scatter:散点图
  • stock:股票样式的图表
  • radar:雷达样式的图表

3.实例


#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Yinjia'

import xlsxwriter

#生成.xlsx文件
workbook = xlsxwriter.Workbook('test_table.xlsx')
#工作页
worksheet = workbook.add_worksheet('测试详情')
worksheet.set_tab_color('red')

#准备测试数据
bold = workbook.add_format({
  'bold': 1,       #字体加粗
  'fg_color': 'green',  #单元格背景颜色
  'align': 'center',   #对齐方式
  'valign': 'vcenter',  #字体对齐方式
})
headings = ['Number','Batch1','Batch2'] #设置表头
data = [
  [2,3,4,5,6,7],
  [10,40,50,20,10,50],
  [30,60,70,50,40,30],
]

#插入数据
worksheet.write_row('A1',headings,bold) #行插入操作
worksheet.write_column('A2',data[0]) #列插入操作
worksheet.write_column('B2',data[1])
worksheet.write_column('C2',data[2])

#插入直方图1
chart1 = workbook.add_chart({'type':'column'}) #选择竖状图
chart1.add_series({
  'name': '=测试详情!$B$1',
  'categories': '=测试详情!$A$2:$A$7',
  'values':  '=测试详情!$B$2:$B$7',#Y轴值
  'data_labels': {'value': True} #显示数字,就是直方图上面的数字,默认不显示
})

#注意上面写法 '=Sheet1!$B$2:$B$7' Sheet1是指定工作页, $A$2:$A$7是从A2到A7数据,
#插入直方图2
chart1.add_series({
  'name': '=测试详情!$B$1',
  'categories': '=测试详情!$A$2:$A$7',
  'values':  '=测试详情!$C$2:$C$7',#Y轴值
  'data_labels': {'value': True}
})

chart1.set_title({'name': 'Chart with Data Table'}) #直方图标题
chart1.set_x_axis({'name': 'Test number'}) #X轴描述
chart1.set_y_axis({'name': 'Sample length (mm)'})#Y轴描述
chart1.set_table() #设置x轴为数据表格式
chart1.set_style(3)#直方图类型
worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10}) #直方图插入到 D2位置
workbook.close()

4.效果图

作者:YinJia 出处:http://www.cnblogs.com/yinjia/

以上就是python xlsxwriter模块的使用的详细内容,更多关于python xlsxwriter模块的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表