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


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

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

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

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


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




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

新創建工程名爲: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

相關文章
相關標籤/搜索