2014-06-28 119 views
2

我正在使用Java開發系統,它涉及將數據保存到Excel文件而不是保存到數據庫。這是客戶的要求之一。Apache POI Excel - 搜索並替換文本

我已經完成了使用Java的Apache POI創建Excel文件,所以與此問題。但現在我想有更便捷的方式來做到這一點。

我想要一個Excel模板,這樣用戶可以設計自己的輸出。數據將被佔位符替換插入到Excel中。

我的問題是,有沒有辦法在使用Apache POI的Excel中替換一些文本?

謝謝!

回答

0

我不認爲POI有這個內置。它是一個低級別的API,可以在任何環境下讀取和寫入Excel,甚至可以在沒有安裝excel的情況下使用,也不可能(僅適用於二進制文件格式)。所以你必須自己建立這個,但不是太難。

已經做了一個項目,用戶可以命名具有特定值的單元格,然後代碼將查找這些單元並將它們用作插入數據的地方的提示。因此,您可能需要提出格式並寫入代碼根據需求自行穿過第n行。

我們曾經解析前10行和50列,找出在哪裏放置標題信息,摘要等,然後詳細數據,並移動到另一個數據表中超過x行。它工作得非常好,以至於爲1個報告編寫的代碼可以用於其他2個沒有修改的代碼。

對於數據庫端 - 必須定義查詢,然後在另一個屬性表中引用它們。

的符號是這樣的

q1=select c1,c2 ... where c1=p1 and c2=p2 

q2=select c1,c2,c3 from ... where c1 = p3 

其中P1,P2,其中從配置,環境和屏幕的參數。

{-q1.c1-} 

將解析得到查詢ID和列數,如果只有一個:{ - - 和}與查詢ID和列ID它們之間例如

在發現字符牀單

然後結果將其替換(摘要數據),否則將其替換爲下面的行。

這些也可能是excel公式的一部分 - 當excel由用戶創建時,公式將會是invalud,但是在我們替換值後,它們將開始工作。

如果當前Excel有把invalud公式的問題,你可以接受屬性表模板 - specifyinf列名和行號,和Excel公式包括字符串與你的程序的值來代替

+0

我已經閱讀你的答案,並以某種方式不符合我的要求。我們不會使用數據庫服務器,所以我不能有SQL查詢。但是我明白你在你的項目中所做的一切。順便說一下,在我發佈這個問題一小時後,我想出了我的痛苦。我會發布它來回答我的問題,以便任何人都可以將它用作基本代碼。還**感謝你分享你的想法。 –

+0

由於我的名譽低,我不能回答我的問題。我將在這裏發佈, '我設法擁有了一個包含佔位符的Excel模板。通過這種方式,用戶可以根據開發人員給定的佔位符來定製他們的Excel報告。 代碼鏈接: ** http://pastebin.com/kKfLTwcY** 已用過的pastebin發佈整個類的全部源代碼。 如果你需要OSValidator的來源, ** http://pastebin.com/ybVZR2yJ** 我希望這對大家有幫助! –