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

使用xlsxwriter生成Excel时堆叠条形图无法显示的问题

问题排查与修复方案

核心问题1:未关闭工作簿

xlsxwriter必须调用workbook.close()才能将所有内容(包括图表)写入Excel文件,你的代码末尾缺少这一步,导致图表没有被持久化到文件中。

核心问题2:工作表名称不匹配

你创建的工作表默认名称是Sheet1,但代码中引用的是sheetname,两者不匹配。解决方式二选一:

  • 创建工作表时指定名称:worksheet_1 = workbook_1.add_worksheet('sheetname')
  • 把代码中所有sheetname替换为默认的Sheet1

问题3:系列名称引用错误

第一个add_series中的name引用了两个单元格$I$1:$J$1,每个图表系列的名称应该是单个单元格,需要修改为单个单元格引用,比如'=sheetname!$I$1',或者和第二个系列一样使用列表格式。

修复后的完整代码示例

# 使用原始字符串避免路径转义问题
workbook_1 = xlsxwriter.Workbook(filename=r'C:\Users\testdba\Downloads\DB_1.xlsx')

# 指定工作表名称为sheetname,和后续引用一致
worksheet_1 = workbook_1.add_worksheet('sheetname')

chart1 = workbook_1.add_chart({'type': 'bar', 'subtype':'stacked'})

# 修复第一个系列的name引用为单个单元格
chart1.add_series({
    'name':       '=sheetname!$I$1',
    'categories': '=sheetname!$I$2:$I$5',
    'values':     '=sheetname!$J$2:$J$5',
})

chart1.add_series({
    'name':       ['sheetname', 0, 8, 0, 8],  # 修改为单个单元格(0行8列即I1)
    'categories': ['sheetname', 1, 8, 4, 8],
    'values':     ['sheetname', 1, 9, 4, 9],
})

chart1.set_title({'name': 'AGILE COUNT'})
chart1.set_x_axis({'name': 'AGILE'})
chart1.set_y_axis({'name': 'COUNT'})
chart1.set_style(11)

worksheet_1.insert_chart('K2', chart1)

# 必须调用close保存所有内容
workbook_1.close()

额外注意事项

  • 确保I-J列的数据确实存在且格式正确,比如$I$2:$I$5是分类标签,$J$2:$J$5是对应数值
  • 路径中的反斜杠用原始字符串r''包裹,避免转义字符导致路径解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:10:29