我可以将一个图表添加到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行“无效参数”时收到错误。
答案 0 :(得分:0)
我认为您需要获取范围并在获取SeriesCollection对象之前将其传递给第二个图表的SetSourceData方法。
像
这样的东西var range2 = xlWorkSheet.get_Range("D6", "D262");
xlChart1.SetSourceData(range2);
但是我建议您使用基于Microsoft的OpenXML SDK的第三方库,因为如果您要在Server上安装应用程序,那么当有Microsoft Office更新和带有Excel Automation的应用程序时,它会让您头疼这不是一个好的趋势,因为当应用程序上线时它会永远困扰你。
使用Vincent Tan的SpreadSheetLight(Download here)以及DocumentFormat.OpenXml(2.0)库(Download here)
或
E-Iceblue的Spire.XLS 虽然添加了水印表。