2013-04-28 47 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