如何使用 VSTO 和 C# 粘贴 Excel 图表的位图

How can I paste a bitmap of an Excel chart using VSTO and C#

我正在使用 WPF 创建一个 GUI 应用程序,我必须在 GUI 中显示在 Excel 中生成的图表图片。

我使用与此类似的代码在 Excel 中生成图表,效果很好:

        ChartObjects charts = ActiveWorkbook.Sheets[1].ChartObjects(Type.Missing);
        ChartObject chartObject = charts.Add(0, 0, 400,400);
        Chart chart = chartObject.Chart;

        // Set chart object properties
        chart.ChartType = XlChartType.XlChartType.xl3DBarClustered;
        SeriesCollection seriesCollection = (SeriesCollection)chart.SeriesCollection();

        var series = seriesCollection.NewSeries();
        series.Values = new int[] { 1, 2, 3, 4, 5 };
        series.XValues = new int[] { 100, 200, 300, 400, 500 };
        series.Name = "MySeries";
        ChartArea chartArea = chart.ChartArea;

结果看起来像这样

然后我使用以下代码将图像复制到剪贴板:

    ChartArea chartArea = chart.ChartArea;
    chartArea.Copy();

并使用以下方法将其粘贴到我的 GUI 中:

    BitmapSource bitmap = Clipboard.GetImage();

但是,结果不包含坐标轴、图表标题或系列名称。

结果如下所示:

我已经尝试在 运行 方法之后将剪贴板的内容粘贴到画图中,结果生成了一张我想要的图片,带有坐标轴等等。我想这意味着问题出现在最后一行 returns 来自剪贴板的图像。

有谁知道我该如何解决这个问题?

Clipboard.GetImage() 中似乎存在错误,如下文所述并已解决:http://www.thomaslevesque.com/2009/02/05/wpf-paste-an-image-from-the-clipboard/