python xlsxwriter模块生成EXCEL柱状图、饼图

这篇博客介绍了如何使用Python的xlsxwriter库生成Excel文件,并创建柱状图和饼图。首先通过pip安装xlsxwriter,然后导入并设置单元格样式。接着,创建数据并写入工作表,设置了不同单元格的样式和宽度。之后,分别创建了普通柱状图、柱状叠图和饼图,并设置了图表标题、轴标签和样式。最后,将图表插入到工作表中并保存Excel文件。
摘要由CSDN通过智能技术生成

python xlsxwriter模块生成EXCEL柱状图、饼图

安装xlsxwriter

pip3 install xlsxwriter

导入包

import xlsxwriter

代码及说明

  • 生成表格数据
import xlsxwriter
path_Name =  'test.xlsx'
# 路径及文件名
workbook = xlsxwriter.Workbook('/Users/xyt/Desktop/'+path_Name)
# 定义基本样式
base_style = workbook.add_format({"align": "left",'border': 0, 'font_size': 12,'text_wrap': 1,'valign': 'vcenter'})
# 定义表格中的文本内容为自动换行格式
base_style.set_text_wrap()

headings = ['姓名','1的数量','2的数量']
data = [['A',12,10],['B',12,15],['C',12,20],['D',12,25]]

# 创建一个工作表,名为sheetOne
worksheet = workbook.add_worksheet("sheetOne")
# 合并单元格
worksheet.merge_range('A1:C2', 'Mytable')
worksheet.write_row("A3",headings,base_style)

# 将第一列设为红色(此处仅为了展示如何定义单个单元格样式的例子)
for row in range(0,len(data)):
    for col in range(0,len(data[row])):
        if col==0:
            worksheet.write(row+3, col, data[row][col], workbook.add_format({"fg_color": "red",'border': 1, 'font_size': 12,'text_wrap': 1,'valign': 'vcenter'}))
        else:
            worksheet.write(row+3, col, data[row][col],base_style)

# 无特殊样式设定,直接插入数据
# for i in range(0,len(data)):
#     # 从A3开始插入
#     worksheet.write_row("A{}".format(i+3),data[i],base_style)
  • 设置某一单元格的宽度
# 设置某一单元格宽
for j in range(len(headings)):
    if j==0:
        worksheet.set_column(j, j, width=20)

  • 批量设置单元格宽度
worksheet.set_column('B:D', 12)#设置B-D的单元格宽度为12
  1. 简单柱状图
#添加柱状图
chartShow1 = workbook.add_chart({"type":"column"})
t = 'B'

for i in range(len(headings)-1):
    chartShow1.add_series({
        "name":"=sheetOne"+"!$"+t+"$3",
        "categories":"=sheetOne"+"!$A$4:$A$7",
        "values":"=sheetOne"+"!$"+t+"$4:$"+t+"$7",
    })
    t=chr(ord(t)+1)

#添加柱状图标题
chartShow1.set_title({"name":"柱状图"})
#X轴名称
chartShow1.set_x_axis({"name":"姓名"})
#Y轴名称
chartShow1.set_y_axis({"name":"总数"})
#图表样式
chartShow1.set_style(11)
chartShow1.set_size({'width':450,'height':250})

worksheet.insert_chart("H2",chartShow1)

  1. 柱状叠图

#添加柱状图叠图子类型
chartShow2 = workbook.add_chart({"type":"column","subtype":"stacked"})
t = 'B'
for i in range(len(headings)-1):
    chartShow2.add_series({
        "name":"=sheetOne"+"!$"+t+"$3",
        "categories":"=sheetOne"+"!$A$4:$A$7",
        "values":"=sheetOne"+"!$"+t+"$4:$"+t+"$7",
        # "fill":   {'color': 'red'}, # 设置填充颜色
    })
    t=chr(ord(t)+1)

chartShow2.set_title({"name":"叠图"})
chartShow2.set_x_axis({"name":"姓名"})
chartShow2.set_y_axis({"name":"总数"})
chartShow2.set_style(12)
chartShow2.set_size({'width':450,'height':250})

worksheet.insert_chart("H20",chartShow2)
  1. 饼图

chartShow3 = workbook.add_chart({"type":"pie"})

chartShow3.add_series({
    #"name":"饼形图",
    "categories":"=sheetOne!$A$4:$A$7",
    "values":"=sheetOne!$C$4:$C$7",
    #定义各饼块的颜色
    "points":[
        {"fill":{"color":"yellow"}},
        {"fill":{"color":"blue"}},
        {"fill":{"color":"red"}},
        {"fill":{"color":"green"}}
    ],
    'data_labels': {
        # 显示数值
		'value': True, 
        # 显示百分比
        'percentage':True,
		'leader_lines': True, 
		'category': True,
		'separator': "\n",
		# 'border': {'color': '#7F7F7F','transparency': 50},	#使用transparency关键字来设置透明度
		# 'fill':   {'color': '#D9D9D9','transparency': 30},    #数据显示块颜色
        # 'font': {'rotation':-45}  # 文字倾斜度
	}, #显示标签
})

chartShow3.set_style(10)
chartShow3.set_size({'width':400,'height':250})
# 插入
worksheet.insert_chart("A20",chartShow3)
  • 关闭workbook
workbook.close()

运行结果

在这里插入图片描述

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值