繁体   English   中英

如何使用C#在同一Excel工作表中添加2个图表

[英]how to add 2 charts in same excel sheet using c#

我可以将一张图表添加到Excel工作表中,但是如果有2张图表,我的方法将无法正常工作。 我正在使用以下代码添加2个图表

//chart 1
Excel.ChartObjects chartObjs = (Excel.ChartObjects)xlWorkSheet.ChartObjects();
Excel.ChartObject chartObj = chartObjs.Add(150, 150, 600, 600);
Excel.Chart xlChart = chartObj.Chart;
Excel.Range xValues = xlWorkSheet.Range["A6", "A262"];
Excel.Range values = xlWorkSheet.Range["B6", "B262"];

var range = xlWorkSheet.get_Range("A6", "A262");
xlChart.SetSourceData(range);

Excel.Range chartRange = xlWorkSheet.get_Range("A6:A262");
xlChart.SetSourceData(chartRange, Type.Missing);
xlChart.ChartType = Excel.XlChartType.xlLine;
xlChart.HasLegend = false;

Excel.Series series = (Excel.Series)(xlChart.SeriesCollection(1));
series.XValues = xlWorkSheet.get_Range("B2:B262");

//2nd chart
Excel.ChartObject chartObj1 = chartObjs.Add(300, 300, 400, 400);
Excel.Chart xlChart1 = chartObj1.Chart;

xlChart1.ChartType = Excel.XlChartType.xlLine;
Excel.Series series1 = (Excel.Series)(xlChart1.SeriesCollection(1));  -- line1
series1.Values = currentVY;
series1.XValues = currentVX;

我在代码中出错的地方? 我在第1行“无效参数”处收到错误消息。

我认为您甚至在获取SeriesCollection对象之前,都需要获取范围并将其传递给第二张图表的SetSourceData方法。

就像是

var range2 = xlWorkSheet.get_Range("D6", "D262");
xlChart1.SetSourceData(range2);

但是我建议您使用基于Microsoft的OpenXML SDK的第三方库,因为如果要在Server上安装应用程序,那么当有Microsoft Office更新时,这会让您头疼,并且带有Excel Automation的应用程序不是一个好趋势,因为当应用程序上线时,它将永远困扰着您。

与Vincent Tan一起使用SpreadSheetLight( 在此处下载 )以及DocumentFormat.OpenXml(2.0)库( 在此处下载

要么

E-Iceblue的Spire.XLS,但增加了水印纸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM