2013-04-28 45 views
1

我需要将我的数据库中的数据显示到.xls电子表格中。 我可以读取/写入xls文件没有任何问题,但显然我无法从头开始创建图表。Apache POI修改图表,不使用命名区域

我阅读了我能找到的每个文档,并创建了一个模板文件,其中的图表在Excel中被POI修改。

我面临的问题如下:我能够创建命名范围,将它们分配给我的图表并通过POI修改它们,没有任何问题。当我回到OpenOffice Calc问题开始时:它不支持命名范围作为图表的数据源,因此:

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

谢谢

回答

0

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

如果数据中的行数不变,那么您可以将恒定范围的数据分配给图表。

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

This article描述了使用这些公式来创建基于数据内容的动态范围。

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

例如,如果第1行中有一个标题行,那么您有5个数据字段(列A-E),并且您知道数据中的列A永远不会为空或空,例如,

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

...然后使用类似下面的公式图表范围确定动态范围:

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

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

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

+0

感谢您的详细解答,但我认为我需要一些更具体的问题。我写了我无法为我的图表使用命名范围,因为OpenOffice Calc不支持它们,所以我要求任何方式创建可通过POI进行编辑的图表,并使用Calc和Excel可见。我可以将函数= OFFSET(xxxxxxxx)分配给图表,而不使用Calc中的命名范围?我可以使用POI修改它吗?谢谢! – Andrea 2013-05-03 15:09:15