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
相关产品推荐
相关产品推荐

