【发布时间】:2011-08-06 18:01:39
【问题描述】:
我现在花了几个小时试图从我的 C# 应用程序在 Excel 中创建一些图表。我正在尝试创建多个图表对象。有没有更好的方法来做到这一点?我确定行“chartObject[col] = (Excel.Chart)oWB.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);”是我要去错的地方。
目前,当我调用这条线时,它有时会创建最后一张图表的副本,但有时它会起作用。我完全看不懂它的逻辑。
谢谢
private void CreateCharts(Excel.Worksheet oWS, int numRows, int numCols)
{
Excel.Workbook oWB = (Excel.Workbook)oWS.Parent;
Excel.Series oSeries;
//Excel._Chart chartObject;
Excel.Chart[] chartObject = new Excel.Chart[numCols];
Excel.SeriesCollection[] oSeriesCollection = new Excel.SeriesCollection[numCols];
int length = numRows + 2;
string colname;
//then you can assign as much as series you want,
for (int col = 0; col < numCols; col++)
{
//create a new chart
chartObject[col] = (Excel.Chart)oWB.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
chartObject[col].ChartType = Excel.XlChartType.xlLine;
oSeriesCollection[col] = (Excel.SeriesCollection)chartObject[col].SeriesCollection();
//add the actual occupancy
colname = GetExcelColumnName(col * 3 + 1);
oSeries = oSeriesCollection[col].NewSeries();
oSeries.Values = oWS.Range[colname + "2", colname + length];
//add the expected occupancy
colname = GetExcelColumnName(col * 3 + 2);
oSeries = oSeriesCollection[col].NewSeries();
oSeries.Values = oWS.Range[colname + "2", colname + length];
}
}
【问题讨论】:
-
我想知道使用 ASP.NET 的图表控件是否会对您有所帮助。或者你需要把它放到Excel中吗?图表控件可以将图表直接放在网页中。我大约一年前设置了这个,所以如果您有任何问题,请告诉我。 archive.msdn.microsoft.com/mschart 另一种选择是使用 Sencha extjs 框架来绘制图表 (sencha.com)。
-
如果您告诉我您使用的 Excel 库是什么,我可能会回答您的问题。此外,如果您可以提供检索工作簿和工作表的代码(基于您方法中的第一个参数),那也会有所帮助。