不幸的是,OpenFaces Datatable尚未具有與Primefaces或IceFaces不同的導出功能。 雖然導出是小菜一碟,但過濾IceFaces或primefaces數據表是一些恐怖電影,然而primeFaces的過濾不適用於JSF DataModel(悲傷但真實)。如何導出Excel/CSV格式的OpenFaces數據表?
使用OpenFaces DataTable過濾是一塊蛋糕,非常方便和強大。 但是怎麼樣最終用戶誰想要導出一個他/她篩選的數據表格,如CSV或MS Excel。
從OpenFaces偉大的德米特里,給了我一個提示: 使用OpenFaces DataTable的方法:getDisplayedRowDatas()
將抓住當前顯示的行從數據表,然後使用像iText的一些THRID庫在PDF導出例如。
在我的頭上,這應該是這樣的:
- 爲此創建一個後臺bean。
- 使用Apache POI到數據表中,其方法
getDisplayedRowsDatas()
的OpenFaces的內容導出添加的Apache POI第三庫到classpath - 編寫代碼 - 但恐怕這種方法不返回列的標題名稱 - 或者將由OpenFaces Datatable呈現的HTML表格作爲緩衝字符串獲取,並使用Apache POI生成一個與緩衝區流式傳輸的Excel文件。
在我近來看到的MyFaces的例子:MyFaces Datatable Export Example,開發人員使用的MyFaces組件<t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer />
到DataTable的內容轉換成一個緩衝的字符串,這使得事情變得更加容易。 JSF Core不幸的是沒有這樣的組件。
有人遇到過這個嗎?非常感謝幫助或更好的替代方案。
感謝您的回答。知道OpenFaces的傳入版本將包含CSV導出器令人興奮。它適合我,如果它是CSV而不是excel!但是,我應該怎麼做?用每晚構建的一個替換實際的Openfaces jar(我不喜歡)。否則,我應該如何物理使用導出器API?因爲我將NBuild作爲第二個libray導入,這導致JSF實現衝突。問候 – Hanynowsky
我做了正是你推薦的,我只得到表頭,但沒有導出的CSV文件中的行數據。如果表格是空的而不是這種情況。有什麼不對?我在論壇上發佈了一個問題!關注@Dmitry – Hanynowsky
在論壇發帖後解決。但是,我仍然可以如何使用導出APi以及3.0。問候@Dmitry – Hanynowsky