報表工具如何實現多次導入Excel
很多人在開發報表的時候會遇到將多張表樣相同的excel導入到模板,然后提交至數據庫中。但問題是很多情況,在線導入不支持一次性選擇多個excel,一次只能選擇一個excel,也不能將多個excel中的數據在不提交入庫的前提下導入到模板中,即如果在導入excel之前,web頁面里面有數據,導入excel之后會覆蓋之前的數據。
那這樣的問題是不是無法解決呢?
解決的思路是利用FineReport自定義一個excel導入按鈕,在點擊該按鈕的時候將上一次導入到模板中的數據進行提交,同時刷新頁面,讓頁面恢復到原始的空白狀態,并實現excel導入操作,然后再點擊導入按鈕,導入下一個excel,以此類推,這樣在操作上就會簡單很多。
比如將下面2張表樣相同的excel導入到FineReport模板中:
1.修改其表樣,使其與excel中的標題名保持一致,如下圖:
2.報表填報屬性修改
修改報表填報屬性中列和數據庫中列的對應,這里只需要修改類別ID對應的值,修改為map(C2, "ds2", 2, 1)。
3.自定義導入按鈕
點擊模板>模板web屬性>填報頁面設置,雙擊工具欄中的自定義按鈕,將該按鈕添加到頂部工具欄中,同時刪除內置的導入Excel按鈕和提交按鈕,如下圖:
4.自定義事件編寫
在解決思路中描述了自定義按鈕需要執行的操作為:在點擊按鈕的時候將上一次導入到模板中的數據進行提交,同時刷新頁面,讓頁面恢復到原始的空白狀態,并實現excel導入操作。
在工具欄編輯界面,選中自定義按鈕,點擊自定義事件,如下圖:
在JavaScript腳本中寫下js語句,如下圖:
if (value!="") {
FR.Msg.confirm("提示", "是否提交上一次導入數據", function(result){
if(result){
_g('${sessionID}').writeReport();
contentPane.refreshAllSheets();
contentPane.importExcel();
}
});
}
else{
contentPane.importExcel();
}
點擊填報預覽,點擊導入Excel這個自定義按鈕,選擇第一個需要導入的Excel,然后再點擊第二個需要導入的Excel,頁面會提示是否提交上一次導入數據,點擊確定,則會將上一次導入數據提交至數據庫,然后再彈出文件選擇框,這時就可以選擇第二個Excel,以此類推。
要提醒的是,在利用此工具填報報表在線多次導入Excel時只支持空白模板的導入,即填報模板中不能有原始數據存在;在線多次導入Excel支持各種樣式的填報報表,不僅僅局限于行式填報報表,但是如果是非行式填報報表,報表的控件位置需要與Excel中的數據位置保持一致,行式填報報表則需要保持標題名一致。