Apache POI修改图表,而不使用命名范围

我需要将我的数据库中的数据显示到.xls电子表格中。 我可以读取/写入xls文件没有任何问题,但显然我不能从头开始创build图表。

我阅读了所有可以find的文档,并创build了一个模板文件,并使用Excel中的图表进行POI修改。

我面临的问题是:我能够创build命名的范围,将它们分配给我的图表,并通过POI修改它们,没有任何问题。 当我恢复到OpenOffice Calc时,问题就开始了:它不支持命名范围作为图表的数据源,所以:

有没有办法更新图表数据,而不使用命名的范围(我可以给图表自己的范围,每一个系列是一行的分隔部分)?

谢谢

使用命名范围是根据未知数量的数据更改图表数据以放置在图表中的最简单方法。

如果数据中的行数是常数,则可以将恒定范围的数据分配给图表。

如果事先不知道行数,那么它会变得复杂,没有命名的范围。 这里的关键是在模板表的图表中使用Excel的OFFSETCOUNTA公式。

本文介绍如何使用这些公式来创build基于数据内容的dynamic范围。

COUNTA公式计算在一个恒定范围内有多less个单元格被填充。 OFFSET公式根据其input创build一个dynamic范围,其中包括范围起点的列和行参数以及dynamic范围需要达到多大的长度和宽度参数。

例如,如果行1中有标题行,则有5个数据字段(列AE),并且您知道数据中的列A永远不会是空白或空的,例如

 First Name | Last Name | Hire Date | Salary | Manager -----------+-----------+-----------+--------+--------- Data | Goes | Here | | 

…然后在图表范围中使用类似下面的公式来确定dynamic范围:

 =OFFSET(A2, 0, 0, COUNTA(A2:A101), 5) 

这意味着:从A2开始。 用0行0列的偏移量来调整范围的开始(范围的左上angular是A2)。 范围的高度是在A2和A101之间填充的行数(假设您的数据最多为100行;根据您的需要调整A101常量)。 范围的宽度是5列。

上面链接的文章更详细地描述了它。