軟件准備OO是OpenOffice的簡稱而非眾人皆知的面向對象有關它的開發文檔有好幾沓在此不多言了別忘了先安裝一下啊否則無法進行類型轉換的OO支持的文檔類型odtods等對應熟知的Office文檔類型docxls JOOReports是基於OO文檔模版的文檔生成軟件支持動態替換和freemarker ELCollection的文檔重復替換附隨源代碼提供了比較精簡的api和doc但源代碼中的example很值得一看
JOOConvert毋庸置疑就是配套的文檔轉換軟件將文檔托管給OO進行轉換然後獲得轉換後的文檔支持多種類型文檔odtodsdocrtftxtpdfxls後面的代碼中有詳細介紹
代碼框架信手寫來也稱不上框架總體上分了三部分調用JOOReports/JOOConvert的核心類基於Strieps框架的web實現必不可少的UnitTest核心部分DocumentTemplateParam文檔生成參數類
DocumentConvertParam文檔轉換參數類
ConvertContext用於連接OO網絡服務的轉換上寫文類
DocumentGenerator文檔生成類
DocumentFormatConverter文檔格式轉換類
之所以分如此細致也許是本人的重構癖作祟吧但擴展起來是很具靈性的如果Martin Flower大人看到可能感激落淚吧
Web實現很簡單的Stripes框架實現的產品登記輸出為docpdfxls格式的文件在此拋磚引玉啦
Product產品Bean類
ProductDetailActionBean實現產品登記的ActionBean類
WEBINF/fileTemplateodtods文檔模版保存位置
UnitTest對核心部分進行測試當然Stripes也可作測試但應用簡單懶於編寫了
編寫文檔模版OO在設計時考慮了通用性所以每個odtods文件都是以zip的壓縮模式保存只要用相關軟件便可以觀其狀了Contentxml尤為重要其中保存了模版數據如hellotemplateodt
其中的亂碼是因UTF編碼造成文檔風格就是xml分割但其中紅色代碼使用了freemarker的表達式風格這也是JOOReport所支持的具體詳見freemarker和JOOConvert manual編寫模版時建議使用設計好格式的文檔然後使用文本編輯器在其中插入表達式切勿在OO中直接編寫表達式因為OO會對其進行轉換使其失效
轉換文檔時啟動OO後台服務在調用JOOReport生成文檔時無需啟動OO因為與OO服務無關而調用JOOConvert進行文檔轉換時就需要在控制台中輸入一下cd %OPENOFFICE_HOME%\program sofficeexe headless accept=socketport=host=localhosturp OPENOFFICE_HOME代表了OO安裝時的目錄
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27440.html