如何用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()
关键说明
- 数据读写流程:先读取原始数据到DataFrame,再写入
ExcelWriter对应的工作表,确保图表有有效数据可引用。 - 动态数据范围:用
len(df)获取实际数据行数,避免硬编码2000行的局限性。 - 图表引用规范:
categories指定X轴数据(Time列),values指定Y轴数据(Sample列),Sheet名称严格与实际一致。 - 正确关闭文件:
writer.close()会自动处理workbook的保存逻辑,保证文件结构完整。
内容的提问来源于stack exchange,提问作者jjk
相关产品推荐
相关产品推荐

