Python加载Excel仪表板失败,graph1工作表折线图为空,如何正确加载图表为图像
问题根因
pandas.read_excel 仅支持读取Excel工作表内的单元格表格数据,无法识别嵌入的图表对象,因此读取仅存放图表的graph1工作表时返回空值属于正常现象。若要将Excel中的图表导出为图像文件,可参考以下可行方案:
方案1:xlwings(适配Windows/macOS,要求本地安装Excel/WPS/LibreOffice)
该方案导出的图表效果和Excel内预览完全一致,是最常用的方案,示例代码如下:
import xlwings as xw # 后台启动Office进程,不弹出可视化窗口 with xw.App(visible=False, add_book=False) as app: # 打开目标Excel文件,替换为你的文件路径 workbook = app.books.open("example.xlsx") # 定位到存放图表的graph1工作表 worksheet = workbook.sheets["graph1"] # 遍历工作表内所有图表逐一导出 for index, chart in enumerate(worksheet.charts): # 自定义导出路径和文件名 chart.to_png(f"./export/chart_{index}.png") workbook.close()
方案2:win32com(仅Windows环境,要求本地安装Excel)
import win32com.client as win32 from PIL import ImageGrab import os excel = win32.Dispatch("Excel.Application") excel.Visible = False # 打开文件需传入绝对路径 workbook = excel.Workbooks.Open(os.path.abspath("example.xlsx")) worksheet = workbook.Worksheets("graph1") for index, chart in enumerate(worksheet.ChartObjects()): chart.Copy() # 从剪贴板获取图表图像并保存 img = ImageGrab.grabclipboard() img.save(f"./export/chart_{index}.png") workbook.Close(SaveChanges=False) excel.Quit()
方案3:无GUI Linux环境方案
无需启动可视化Office界面,调用LibreOffice命令行直接将指定工作表转为图片:
libreoffice --headless --convert-to png --outdir ./export --sheet "graph1" example.xlsx
导出后如果存在多余空白区域,可通过PIL等图像处理库裁剪得到仅含图表的图像。
注意事项
- 不要尝试用pandas、openpyxl的常规单元格读取接口获取图表,这类工具仅处理单元格结构化数据,不解析嵌入的图像/图表对象
- 导出前请确认图表所在工作表、图表本身未设置隐藏属性,否则会导致导出失败
内容的提问来源于stack exchange,提问作者Shivam Anand
相关产品推荐
相关产品推荐

