請閱讀word文檔
開發意圖:
在web開發中經常需要將jsp或html頁面中表格數據導出為pdf、doc、xls等格式。然而在實現這一功能用到了一些開源的組件,每實現這一功能時都需要編寫大量重復性代碼。由此,對該部分進行了封裝,做到通用性,在有需求的情況下,只需要拷貝相應的組件或依賴的JAR包到你的工程中,進行配置即可。
功能:
本組件可以將表格中的內容導出為pdf、doc、xls、jpg(采用了ImageIo,導出圖片效果不是很好)。
上述四種類型的報表組件所使用的技術
pdf使用到了iText.jar由于需要支持中文所有用到了亞洲字體包iTextAsian.jar
doc word文檔這里并沒有使用到jacob,而使用了iText的另一個jar包iText-rtf-2.1.7.jar,借助該jar可生成rtf格式的文檔,而指定文件后綴名時指定為.doc即為word文檔,之所以使用該jar,是因為它簡單方便。
xls使用了apache的開源組件poi-3.6-20091214.jar
jpg使用jdk自帶的ImageIo
jquery 項目中用到了jquery,使用jquery遍歷頁面表格中的內容,然后將數據發送到后臺對數據進行處理,根據用戶需求生成對應的文檔。
環境:
開發環境:
WindowsXP sp3/Windows7+jdk1.6.13+javaee1.4/javaee5+myeclipse6.5+tomcat5.5/tomcat6.0+jquery
測試環境:
WindowsXP sp3/Windows7+jdk1.6.13+javaee1.4/javaee5+IE8+firefox3.6+tomcat5.5/tomcat6.0
組件包
核心組件:com.future.report_1.0.0.201007291116.jar
依賴的JAR:
iText-2.1.7.jar①
iTextAsian.jar②
iText-rtf-2.1.7.jar③
poi-3.6-20091214.jar④
注:其中①②項為生成pdf所依賴的jar包
③項為生成doc文檔所依賴的jar包當然它同時依賴①②項
④為生成excel所依賴的jar包

com.future.report_1.0.0.201007291116.jar類明細圖

com.future.report.Activator此類實現了osgi的org.osgi.framework.BundleActivator。開發中不關心這個類
com.future.util.report.controller.ExportReportServlet初始的報表導出servlet。只需配置該servlet到你的工程中即可
com.future.util.report.encodingfilter.EncodingFilter字符集過濾filter一般設置為utf-8你可以在web.xml中修改它
com.future.util.report.factory.ExportReportFactory報表導出工廠,根據用戶傳遞過來的報表類型創建能生成對應該類型報表的實例
com.future.util.report.factory.ReportFontFactory 用于pdf word文檔的字體生成工廠
com.future.util.report.impl.ExportReportForExcel 此類用于生成Excel格式的報表
com.future.util.report.impl.ExportReportForJPG此類用于生成JPG圖片
com.future.util.report.impl.ExportReportForPDF此類生成PDF格式的文檔
com.future.util.report.impl.ExportReportForWord此類生成Word文檔
com.future.util.report.intf.IExportReport此類內部定義了一枚舉用來標識要生成的報表類型
com.future.util.report.tags.ERTagUtil此類用于讀取META-INF下的js文件并生成到WebRoot/er_js目錄下
com.future.util.report.tags.ExportReportTag報表導出標簽
具體參考對應的Javadoc或源碼
注:
在lib目錄下
com.future.report_1.0.0.201007291116.jar使用eclipse-plugin打成的JAR包
export-report_1.2.jar為eclipse工程導出的jar包
兩個jar沒有功能上的差異都可以使用,二者各選其一即可

注:由于文檔中含大量圖片不方便一一上傳,如需了解直接下載該組件包,內含詳細的文檔及源碼和例子
點我下載該組件包及源碼和例子