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

如何用C#仅将多个Excel图表导出至单个PDF文件

解决C#导出Excel图表至PDF仅保留图表的问题

你当前代码的问题在于调用了workbook.ExportAsFixedFormat,这个方法会导出整个工作簿的所有可见内容,即便你选中了图表,也不会改变它的导出范围。要只导出选中的图表(图表工作表),需要针对选中的工作表集合执行导出操作。

修正后的代码

List<string> chartnames = new List<string>();

for (int i = 0; i < workbook.Charts.Count; i++)
{
    chartnames.Add(workbook.Charts[i + 1].Name);
}

// 选中所有图表工作表
workbook.Charts[chartnames.ToArray()].Select();

// 导出选中的工作表(即所有图表)而非整个工作簿
Globals.ThisAddIn.Application.ActiveWindow.SelectedSheets.ExportAsFixedFormat(
    XlFixedFormatType.xlTypePDF, 
    filename
);

更简洁的写法

不需要提前收集图表名称,直接遍历选中所有图表工作表后导出:

if (workbook.Charts.Count > 0)
{
    // 选中第一个图表,后续用Extend方式选中剩余图表
    workbook.Charts[1].Select(false);
    for (int i = 2; i <= workbook.Charts.Count; i++)
    {
        workbook.Charts[i].Select(true);
    }
    // 导出选中的图表工作表
    Globals.ThisAddIn.Application.ActiveWindow.SelectedSheets.ExportAsFixedFormat(
        XlFixedFormatType.xlTypePDF, 
        filename
    );
}

补充说明

  • 若你要导出的是嵌入式图表(嵌入在普通工作表里的图表,而非独立的图表工作表),则需要逐个选中图表并导出,或者将每个嵌入式图表复制到新的图表工作表后再统一导出。
  • 确保导出前所有图表工作表处于可见状态,隐藏的工作表不会被纳入导出范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:25:23