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

如何用Python在Excel中绘制折线图?代码运行后文件无法打开求助

问题分析与解决

你的代码导致Excel文件无法打开,核心问题如下:

  • Sheet名称不匹配:代码里定义的sheet_name是'Sheet1',但添加图表系列时用了"Sheet 1"(多了空格),图表找不到对应数据区域,直接损坏文件结构。
  • 未写入数据到工作表:仅初始化了ExcelWriter但没把原始Excel的数据写入工作表,空表加无效的图表引用会让文件无法正常解析。
  • 错误的关闭方式:应该用writer.close()完成文件保存与关闭,直接调用workbook.close()会跳过ExcelWriter的收尾逻辑,导致文件不完整。

修正后的完整代码

import pandas as pd

# 读取原始Excel数据
excel_file = 'test.xlsx'
df = pd.read_excel(excel_file, sheet_name='Sheet1')

# 初始化ExcelWriter并写入数据
writer = pd.ExcelWriter(excel_file, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)

# 获取workbook和worksheet对象
workbook = writer.book
worksheet = writer.sheets['Sheet1']

# 创建折线图
chart = workbook.add_chart({'type': 'line'})

# 动态获取数据行数,适配不同数据量
row_count = len(df)

# 添加图表系列:Sample vs Time,注意数据范围和Sheet名称匹配
chart.add_series({
    'name': 'Sample',
    'categories': ['Sheet1', 1, 0, row_count, 0],  # X轴用Time列数据(第A列,行2到最后一行)
    'values': ['Sheet1', 1, 1, row_count, 1],       # Y轴用Sample列数据(第B列,行2到最后一行)
})

# 设置图表基础样式
chart.set_title({'name': 'Sample vs Time'})
chart.set_x_axis({'name': 'Time'})
chart.set_y_axis({'name': 'Sample'})

# 插入图表到工作表指定位置
worksheet.insert_chart('P2', chart)

# 正确关闭writer完成保存
writer.close()

关键说明

  1. 数据读写流程:先读取原始数据到DataFrame,再写入ExcelWriter对应的工作表,确保图表有有效数据可引用。
  2. 动态数据范围:用len(df)获取实际数据行数,避免硬编码2000行的局限性。
  3. 图表引用规范:categories指定X轴数据(Time列),values指定Y轴数据(Sample列),Sheet名称严格与实际一致。
  4. 正确关闭文件:writer.close()会自动处理workbook的保存逻辑,保证文件结构完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:55:05