如何使用 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/
我正在使用 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/