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

Python中如何在新工作表绘图且不删除已有工作表?

问题原因

你丢失Sheet1的核心原因是两次独立创建了xlsxwriter.Workbook实例:第二次调用Workbook(file_source)时会直接覆盖第一次生成的file.xlsx文件,相当于重新生成了一个只包含Sheet2的新文件。再加上你创建完Sheet1后就调用了workbook.close(),彻底终止了第一个工作簿的会话,后续操作和它完全无关。

解决方案

要在同一个Excel文件中保留多个工作表,必须在同一个Workbook实例中依次添加所有工作表,最后仅调用一次workbook.close()。修正后的代码如下:

import xlsxwriter

file_source = 'file.xlsx'
# 仅创建一次Workbook实例,对应目标Excel文件
workbook = xlsxwriter.Workbook(file_source) 
# 格式对象可复用,无需重复创建
bold = workbook.add_format({'bold': 1}) 

############# 创建Sheet 1并绘图 #############
worksheet1 = workbook.add_worksheet('Sheet 1')
headings = ['Animal Count','Human Count']
data = [[1,4,7],[6,3,8]]
worksheet1.write_row('A1', headings, bold)
worksheet1.write_column('A2', data[0])
worksheet1.write_column('B2', data[1]) 

chart1 = workbook.add_chart({'type': 'line'})
for i in range(1):
    chart1.add_series({ 
        'name':       ['Sheet 1', 0, i],
        'categories': ['Sheet 1', 1, 0, 1, 0], 
        'values':     ['Sheet 1', 1, i, 1, i], })
worksheet1.insert_chart('J2', chart1, {'x_scale': 2, 'y_scale': 1.5})

############# 创建Sheet 2并绘图 #############
worksheet2 = workbook.add_worksheet('Sheet 2')
worksheet2.write_row('A1', headings, bold)
worksheet2.write_column('A2', data[0])
worksheet2.write_column('B2', data[1]) 

chart2 = workbook.add_chart({'type': 'line'})
for i in range(1):
    chart2.add_series({ 
        'name':       ['Sheet 2', 0, i],
        'categories': ['Sheet 2', 1, 0, 1, 0], 
        'values':     ['Sheet 2', 1, i, 1, i], })
worksheet2.insert_chart('J2', chart2, {'x_scale': 2, 'y_scale': 1.5})

# 所有内容写入完成后,统一关闭工作簿
workbook.close()
关键注意事项
  • 一个Excel文件对应一个Workbook实例,所有工作表都通过该实例的add_worksheet()方法添加
  • 不要中途关闭工作簿,确保所有数据和图表都写入完成后再调用close()
  • 格式、图表样式等对象可在同一个Workbook实例中复用,无需重复创建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:35:40