常常在一些論壇、網站上看到有人提問有關如何將OA、CRM 、ERP等MIS系統中數據庫裏的數據動態填充到Word、Excel等Office文檔裏的指定位置。
這種功能的實現可以利用服務器端Office自動化技術,但這種技術的弊端在於Office自動化開發起來接口調用比較麻煩,另外它的安全性、穩定性也很差。
對於Java開發還有一個方法是我們可以通過Jacob/POI/JXL技術讀寫文檔,但這種方法生成文檔的速度較慢,生成後的Office文檔也無法進行在線編輯,並且接口複雜度較大。
第三種方法就是利用SOAOffice中間件。
SOAOffice的優點是編程接口簡單(提供了Office簡化接口模型的.Net和Java組件,屏蔽了Office的接口細節),使用服務器端編程賦值、客戶端生成文件的架構,符合分佈式思想,把耗用資源的部分放到了客戶執行(與服務器端自動化技術比起來,使用soaoffice開發服務端無需安裝、運行Office,更無需交互賬戶),同時解決了文件的在線打開編輯、數據填充提交的Web技術難題。
在這裏,我們把Word、Excel分爲兩塊來說,來說說利用SOAOffice如何來實現Excel的數據動態填充。
其實,在Excel中,我們通過編寫簡單的代碼就可以將保存在系統數據庫裏的數據動態填充到Excel裏的指定位置。
示例代碼如下:
SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse();
SOAOfficeX.IExcelResSheet sheetOrder = SOAExcel.OpenSheet("銷售訂單");
SOAOfficeX.IExcelResCell cell1;
cell1 = sheetOrder.OpenCell("D5");//客戶名稱
cell1.NeedSubmit = true;
cell1.Value = "北京竹子軟件有限公司"
那麼D5單元格的填充效果如下:
簡單來說通過SOAOffice提供的功能可以將數據庫裏的數據導出到Excel格式的文檔,它能夠根據數據庫數據生成Excel報表。
說完了Excel,我們再來說一說如何實現Word的數據動態填充。
日常工作中,我們經常會寫一些類似“通知”、“公文”等固定格式的Word文檔,這些文檔是有固定的格式或模板的,而在這些模板裏面需要我們修改(或填寫)的只是某些固定位置上的數據或文字,這就用到了固定格式文件的動態生成功能。
示意代碼如下:
SOAOfficeX.WordResponse SOAWord = new SOAOfficeX.WordResponse();
SOAOfficeX.IWordResDataRegion dataRegion = SOAWord.OpenDataRegion("name");
dataRegion.Value = "愛因斯坦";
執行上面的代碼就可以給模板中數據區域爲“name”的位置賦值爲“愛因斯坦”。
模板中數據區域“name”的位置及樣式如下圖:
使用SOAOffice動態填充值的結果如下圖:
這就是將數據庫數據動態填充到Office文檔指定位置通常所使用的幾種方法,供參考。