之前在項目中會用到在Java在后臺把數據填入Word文檔的模板來提供前臺下載,為了自己能隨時查看當時的實現方案及方便他人學習我寫了這篇博客,訪問量已經是我寫的博客里第一了。于是乎我在學會用Java在后臺利用Apache poi 生成excel文檔提供前臺下載之后就想著來寫一篇姊妹篇啦。
在生成Excel文檔的時候我采用了和生成Word時的不同方法,Apache poi。它是用Java編寫的免費開源的跨平臺的 Java API,提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。想要實現這個功能,就按照下面的步驟來做吧,為了方便起見,我直接拿項目中遇到的實例來舉例說明,是的,我在寫這篇博客的時候同時也在完成手上的項目。
step1:創建xls格式的模板
表頭含有我的甲方信息就打碼了,可以看到我搞了一個空的模板文件,現在有很多東西需要在后臺填入
step2:前臺觸發事件
搞一個按鈕,用戶點擊的時候用JavaScript的window.location.href將頁面重定向到你處理下載的URL去
比方說,這是我項目的前臺,看到那個表面質量按鈕嗎,來看一下當它被點擊的時候調用的函數
function exportBatch() { //get請求,可以傳遞參數,比方說我這里就傳了一堆卷號,我只生成傳過去的這堆卷號的檢驗記錄 //參數rollNumbers的細節就不展示了,業務相關 window.location.href = '../ir/exportSurface?rollNumberList=' + rollNumbers; }
有朋友可能想用什么Ajax來發送請求,我反正是沒搞出來,挺麻煩的,網上找的相關解決方案也都比較蛋疼,因此不傳什么復雜的敏感的參數,就這么寫就可以。
step3:后臺處理
首先你當然要把Apache poi那一套東西引入你的項目啦,我的項目是Maven項目,添加依賴很容易
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency>
然后,為了方便導出Excel,在項目中建了一個ExcelUtils工具類,后面給出源碼,這么一來導出Excel會變得更簡單。ExcelUtils里面除了一些既定的方法外,還有就是你具體怎么去操作模板的方法了。當然你用的少的話可以不用我這工具類,而是在你需要的時候import相關的類,然后在你處理的時候就把操作模板的邏輯寫進去也可以。但我這個項目很多次用到導出Excel,所以抽象出一個工具類是很有必要的,符合設計模式。
我的項目是基于SpringMVC的,來看看我后臺接收到請求以后做了些什么吧
Controller:
/*** * 批量導出表面質量檢驗記錄 * * @return * @throws Exception */ @RequestMapping(value = "exportSurface", method = RequestMethod.GET) @ResponseBody public void exportSurface(HttpServletRequest request, HttpServletResponse response) throws Exception { //參數獲取及處理,業務相關不展示 //把要填寫的數據放在一個map里 Map<String, Object> map = new HashMap<String, Object>(); map.put("sequence", "0001");//mock編號 map.put("date", DateUtils.toDateStr(new Date(), DateUtils.DEFAULT_DATE_PATTERN_CHINESE)); map.put("chetaihao", "1#");//mock車臺號 map.put("productName", "預應力鋼絞線");//mock品名 map.put("specification", "規格");//mock規格 map.put("memo", "備注");//mock備注 map.put("inspectRecordBizList", inspectRecodeBizList); ExcelUtils.exportInspectionRecordSurface(request, response, map); }
新聞熱點
疑難解答