2

我需要将数据库中的数据呈现到 .xls 电子表格中。我可以毫无问题地读取/写入 xls 文件,但显然我无法从头开始创建图表。

我阅读了我能找到的所有文档,并使用 Excel 中的图表创建了一个模板文件,以供 POI 修改。

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

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

谢谢

4

1 回答 1

0

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

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

如果事先不知道行数,那么没有命名范围就会变得更加棘手。这里的关键是在模板表的图表中使用 ExcelOFFSETCOUNTA公式。

本文介绍如何使用这些公式根据数据内容创建动态范围。

COUNTA公式计算填充了恒定范围内的单元格数量。该OFFSET公式根据其输入创建动态范围,其中包括范围开始的列和行参数,以及动态范围需要多大的长度和宽度参数。

例如,如果您在第 1 行有一个标题行,那么您有 5 个数据字段(AE 列),并且您知道数据中的 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 列。

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

于 2013-04-29T17:01:05.070 回答