0

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

Charts("Chart1").SeriesCollection(1).Values = _ Array(1, 3, 5, 7, 11, 13, 17, 19)

如何使用 SpreadsheetGear 图表执行此操作?在我的特定问题中,引用单元格范围是不可行的。我试图将值设置为双精度列表和格式为“1、3、5、...、19”的字符串。这些方式都不起作用,SpreadsheetGear 的文档没有给出预期格式的示例。

4

1 回答 1

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) 文件格式。Excel 保存在 XLSX/XLSM 中后,读取上述文件没有问题。但是,Excel 会将此系列公式转换为静态“数据缓存”并删除上面的系列公式。SpreadsheetGear 对这种“数据缓存”的支持有限(我们将其读入但不会将其写入文件格式),因此取决于您在设置系列后将在 SpreadsheetGear 和 Excel 之间进行多少交互和保存上面的公式,在 SpreadsheetGear 和 Excel 之间经过几次传递后,在 SpreadsheetGear 中打开此工作簿时,您可能会遇到这些限制。如果您只是将此工作簿用于报告目的,则不应遇到任何问题。

于 2010-11-10T17:03:11.750 回答