【python 第三方库】xlsxwriter

2024-01-25 00:00:00

目录:

xlsxwriter 支持 Excel 2007+ (XLSX) 格式。

$ pip3 install xlsxwriter

创建工作簿和工作表

import xlsxwriter

# 创建一个新的工作簿
workbook = xlsxwriter.Workbook('test.xlsx')

# 添加一个工作表
worksheet = workbook.add_worksheet()

# 写入数据
worksheet.write('A1', 'Hello')      # 使用单元格名称
worksheet.write(0, 1, 'World')      # 第1行(索引0),第二列(索引1)
worksheet.write(2, 0, 123)          # 第三行(索引2),第一列(索引0)

# 关闭工作簿(保存文件)
workbook.close()

写入不同类型的数据

from datetime import datetime
import xlsxwriter

# 创建一个新的工作簿
workbook = xlsxwriter.Workbook('test.xlsx')

# 添加一个工作表
worksheet = workbook.add_worksheet()

# 不同数据类型的写入
worksheet.write(0, 0, '文本字符串')        # 字符串
worksheet.write(1, 0, 42)                  # 整数
worksheet.write(2, 0, 3.14159)             # 浮点数
worksheet.write(3, 0, True)                # 布尔值
worksheet.write(4, 0, None)                # None值,excel中的单元格啥也不显示

# 日期时间
date_format = workbook.add_format({'num_format': 'yyyy-mm-dd'})
worksheet.write_datetime(5, 0, datetime(2023, 12, 25), date_format)

# 公式
worksheet.write_formula(6, 0, '=SUM(A2:A4)')  # 求和公式
worksheet.write_formula(7, 0, '=AVERAGE(A2:A4)')  # 平均值公式

worksheet.write_formula(8, 0, '2300') 
# worksheet.write_formula(9, 0, '2,300') # 这一行会导致 excel 报错 

workbook.close()

格式化单元格

import xlsxwriter

# 创建一个新的工作簿
workbook = xlsxwriter.Workbook('test.xlsx')

# 添加一个工作表
worksheet = workbook.add_worksheet()

# 创建格式对象
bold_format = workbook.add_format({'bold': True})
red_format = workbook.add_format({'font_color': 'red'})
blue_bg_format = workbook.add_format({
    'bg_color': '#ADD8E6',
    'border': 1
})
number_format = workbook.add_format({'num_format': '#,##0.00'})

# 应用格式
worksheet.write('A1', '粗体文本', bold_format)
worksheet.write('A2', '红色文本', red_format)
worksheet.write('A3', '蓝色背景', blue_bg_format)
worksheet.write('A4', 2300, number_format)

# 合并单元格并添加格式
merge_format = workbook.add_format({
    'bold': True,
    'align': 'center',
    'valign': 'vcenter',
    'fg_color': 'yellow'
})
worksheet.merge_range('B2:D4', '合并单元格示例', merge_format)

workbook.close()

创建柱状图

import xlsxwriter

# 创建一个新的工作簿
workbook = xlsxwriter.Workbook('test.xlsx')

# 添加一个工作表
worksheet = workbook.add_worksheet()

# 示例数据
data = [
    ['月份', '销售额'],
    ['一月', 1000],
    ['二月', 1200],
    ['三月', 900],
    ['四月', 1500],
    ['五月', 1800],
    ['六月', 1600]
]

# 写入数据
for row, row_data in enumerate(data):
    for col, value in enumerate(row_data):
        worksheet.write(row, col, value)

# 创建柱状图
chart = workbook.add_chart({'type': 'column'})

# 配置图表数据系列
chart.add_series({
    'name':       '=Sheet1!$B$1', # B1
    'categories': '=Sheet1!$A$2:$A$7', # A2:A7
    'values':     '=Sheet1!$B$2:$B$7', # B2:B7
    'fill':       {'color': '#5B9BD5'},
})

# 设置图表标题和轴标签
chart.set_title({'name': '月度销售报告'})
chart.set_x_axis({'name': '月份'})
chart.set_y_axis({'name': '销售额'})

# 设置图表大小
chart.set_size({'width': 720, 'height': 480})

# 插入图表到工作表
worksheet.insert_chart('D2', chart)

workbook.close()

创建饼图

import xlsxwriter

# 创建一个新的工作簿
workbook = xlsxwriter.Workbook('test.xlsx')

# 添加一个工作表
worksheet = workbook.add_worksheet()

# 数据
data = [
    ['部门', '人数'],
    ['技术部', 45],
    ['市场部', 30],
    ['销售部', 25],
    ['人事部', 15],
    ['财务部', 10]
]

# 写入数据
for row, row_data in enumerate(data):
    for col, value in enumerate(row_data):
        worksheet.write(row, col, value)

# 创建饼图
chart = workbook.add_chart({'type': 'pie'})

# 配置数据系列
chart.add_series({
    'name': '部门人数',
    'categories': '=Sheet1!$A$2:$A$6',
    'values':     '=Sheet1!$B$2:$B$6',
    'data_labels': {'percentage': True, 'category': True}
})

# 设置图表标题
chart.set_title({'name': '公司部门人数分布'})

# 插入图表
worksheet.insert_chart('D2', chart, {'x_offset': 25, 'y_offset': 10})

workbook.close()

设置列宽和行高

import xlsxwriter

# 创建一个新的工作簿
workbook = xlsxwriter.Workbook('test.xlsx')

# 添加一个工作表
worksheet = workbook.add_worksheet()

# 设置列宽
worksheet.set_column('A:A', 20)      # A 列宽度 20 字符
worksheet.set_column('B:D', 15)      # B 到 D 列宽度 15 字符
worksheet.set_column(4, 6, 12)       # E 到 G 列宽度 12 字符(索引方式)

# 设置行高
worksheet.set_row(0, 30)             # 第 1 行高度 30 磅
worksheet.set_row(1, 25)             # 第 2 行高度 25 磅

# 写入数据测试效果
worksheet.write('A1', '宽列内容测试')
worksheet.write('B1', '中等列宽')
worksheet.write('E1', '标准列宽')

workbook.close()

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: