You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xlsxwriter实现行加粗与单元格着色的问题求助

问题解决:Xlsxwriter生成空Excel及格式设置实现

核心问题:生成空文件的原因

你的代码缺少workbook.close()调用,Xlsxwriter采用缓冲写入机制,所有内容会先存在内存中,只有调用close()方法才会将数据写入磁盘文件,这就是为什么你生成的工作簿为空且无报错的原因。

格式设置实现方案

针对你需要的两个格式要求,我们可以通过Xlsxwriter的格式对象来实现:

  • 创建加粗格式用于整个标题行
  • 创建加粗+蓝色填充格式用于标题行前5列

修改后的完整代码

import xlsxwriter

user_input = [
    ["10002",'01/04/23','',"300",'',"300",'','','',"44.44",'','','','',"34232",'','','',"34",'','',"2312"],
    ["10001","01/30/2023","63","15","12345","gatorade","0.1234","a0001","4","50","50","115.4","123","33456","34543","34234","3432","34.22","1800","1800","0","0"]
]

column_titles = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22']

# 创建工作簿和工作表
workbook = xlsxwriter.Workbook('workbook.xlsx')
worksheet = workbook.add_worksheet()

# 定义格式
bold_format = workbook.add_format({'bold': True})
blue_bold_format = workbook.add_format({'bold': True, 'bg_color': '#ADD8E6'})  # 浅蓝色填充

# 写入标题行:前5列用蓝色加粗格式,其余列用加粗格式
for col_num, title in enumerate(column_titles):
    if col_num < 5:
        worksheet.write(0, col_num, title, blue_bold_format)
    else:
        worksheet.write(0, col_num, title, bold_format)

# 写入数据行(从第2行开始,索引为1)
for row_num, data in enumerate(user_input, start=1):
    worksheet.write_row(row_num, 0, data)

# 必须关闭工作簿才能写入文件
workbook.close()

关键改动说明

  1. 移除user_input.insert(0, column_titles):改为单独处理标题行,方便应用不同格式,避免混合数据和标题的格式逻辑。
  2. 创建格式对象:通过add_format()定义需要的样式,Xlsxwriter支持丰富的格式参数,比如字体、颜色、填充等。
  3. 分区域写入标题:循环标题列,前5列应用蓝色加粗格式,其余列仅加粗,精准满足你的格式需求。
  4. 添加workbook.close():这是解决空文件问题的核心步骤,确保内存中的数据被写入磁盘。

内容的提问来源于stack exchange,提问作者ijoubert21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:55:20