如何以编程方式在SpreadsheetGear中设置图表系列的值?

时间:2010-11-09 23:43:25

标签: c# excel-vba spreadsheetgear vba excel

According to MSDN,Excel允许以编程方式从数组中设置图表系列的Values属性:

图表(“Chart1”)。SeriesCollection(1).Values = _     数组(1,3,5,7,11,13,17,19)

如何使用SpreadsheetGear图表执行此操作?在我的特定问题中,提到细胞范围是不可行的。我试图将值设置为双精度列表和格式为“1,3,5,...,19”的字符串。这些方法都不起作用,SpreadsheetGear's documentation没有提供预期格式的示例。

1 个答案:

答案 0 :(得分:2)

您可以使用由图表系列的常量值数组组成的公式。您需要格式化传递给ISeries.Values的字符串,如下所示:“= {1,2,3,4}”。这是一个更完整的示例,它替换了图表中的第一个系列,假设您在打开的工作簿中的工作表“Sheet1”上有一个图表名称“Chart 1”:

IWorkbook workbook = Factory.GetWorkbook(@"C:\chart.xlsx");
SpreadsheetGear.Charts.IChart chart = workbook.Worksheets["Sheet1"].Shapes["Chart 1"].Chart;
ISeries series1 = chart.SeriesCollection[0];
series1.Values = "={10,20,30,40,50,60}";
workbook.Save();

另外几个笔记。为了与Excel实现最佳兼容性,您需要使用Open XML(XLSX / XLSM)文件格式。在XLSX / XLSM中保存后,Excel在上面的文件中读取没有问题。但是,Excel会将此系列公式转换为静态“数据缓存”并删除上面的系列公式。 SpreadsheetGear对这个“数据缓存”的支持有限(我们读它但不写出文件格式),所以根据你在设置系列后在SpreadsheetGear和Excel之间进行多少交互和保存上面的公式,在SpreadsheetGear和Excel之间多次传递后,在SpreadsheetGear中打开此工作簿时可能会遇到这些限制。如果您只是将此工作簿用于报告目的,则不应遇到任何问题。