ADF Faces導出Excel文件【附樣例工程】


本文提供一個基於ADF Face組件開發樣例工程,工程的實現過程分爲3個部分以應對Excel導出開發中常見的處理。

    1.空模版文件下載:將Excel文件視爲普通文件提供下載操作。

    2.數據文件輸出,將數據內容輸出爲Excel文件,目標文件盡在服務端內存中存在,這種方式需要對Excel文件的內容處理,需要引入響應的類庫。

    3.模版文件填充數據後下載,基於服務端的物理文件爲模板,將業務數據填入約定位置後提供下載,在實現方面需要爲工作簿對象指定源文件輸入流,並完成後續內容處理。


實現的基本思路,由ADF Faces組件觸發文件下載事件,將輸出流引致ManagedBean的事件處理方法中,由ManagedBean實現找到目標文件,組織數據內容,並輸出文件流數據,瀏覽器客戶端接到文件流後會完成剩餘的下載過程。




第一階段:空模版文件下載

新建立工程名爲:DemoExcelExp

wKiom1i-UAiheAujAADIXEqQ2JY903.png-wh_50


創建一個JSP頁面。

wKiom1i-UAiQLhFTAAA1mDDw1qg960.png-wh_50


拖入一個按鈕

wKioL1i-UAjg-8csAAG5jS3qeLw788.png-wh_50


爲按鈕增加客戶端事件:文件下載。

wKioL1i-UAmBKXJQAAHEwYO4Tlc639.png-wh_50

wKiom1i-UArzeiPhAABPlKokAF4858.png-wh_50


操作之後頁面的代碼內容中,增加了沒有設定屬性的按鈕事件標籤。

wKiom1i-UAqRjSOyAAHD5E0diAw841.png-wh_50


在“結構”視圖中可以選中事件節點,並在屬性Tab面板設定下載文件類型和文件名稱。 

wKioL1i-UAugkhtPAAGIQ73pRCo646.png-wh_50


點擊“Method”輸入框旁邊的下箭頭,可以在IDE的輔助下建立管理Bean,並生成下事件的處理方法。

wKiom1i-UAzhqEXPAAFbjSP77t4786.png-wh_50

wKioL1i-UAzxQmhjAABHR9zHab0391.png-wh_50


操作完成後,JSP頁面的代碼爲

wKiom1i-UBHi5rHmAAD7fpngPjE724.png-wh_50


現在可以準備一個目標模版文件,將其放置在管理Bean源代碼所在的文件夾內即可。模板文件有1行數據,分別是Demo1,Demo2,Demo3,Demo4

wKiom1i-UBDj8bLLAAG4WzzAbyk098.png-wh_50


注意:這裏需要檢查JDeveloper的工程設定,確保編譯過程會將Excel文件一併拷貝到輸出目錄中。

wKioL1i-UBPyYppTAAFKxVKudfw626.png-wh_50


修改管理Bean的事件處理代碼,通過類加載資源的方式找到並讀取模板文件,然後將文件內容輸出至事件導入的輸出流對象中。

wKioL1i-UBCCHHPRAAEEBMsAZRU583.png-wh_50


在JSP頁面右鍵選擇“Run”運行頁面。

wKioL1i-UBGySvxnAAD7c9w1OMo068.png-wh_50


點擊“模板下載”按鈕,即可下載之前的模板文件了。

wKiom1i-UBLhOVXRAAB_fh1ISPw913.png-wh_50

wKioL1i-UBKhqKEKAAEKUSzRPKI728.png-wh_50




第二階段:數據文件輸出

加入第二個按鈕:

wKiom1i-UBSBHSPRAAETkv4nKS8782.png-wh_50


輸出數據文件,需要涉及到對Excel文件內容的處理,需要引入相應的類庫,此處引用POI庫完成Excel內容處理。

wKiom1i-UBTiR8XIAAFZdPJYMEA138.png-wh_50


修改管理Bean中的事件處理方法。

wKioL1i-UBXSH1RcAAEFJCiesu4629.png-wh_50


然後即可執行看效果了,點擊第二個按鈕所下載的文件,就是由管理Bean創建並輸出的內容了。

wKiom1i-UBaBRlm9AAEsRJpIqM0697.png-wh_50



第三階段:模版文件填充數據後下載


增加第三個按鈕

wKioL1i-UBewo8sCAAEhqqc2O64695.png-wh_50


修改管理Bean的事件處理代碼

wKiom1i-UBjDiQbWAAEVlHG5pFc393.png-wh_50


運行看到下載的文件有2行內容,第一行是模板默認寫入的內容,第二行是由程序控制寫入的內容。

wKioL1i-UBjQWqUJAAE2EtPh9oI000.png-wh_50


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章