在web應(yīng)用開發(fā)中,我們常常需要將數(shù)據(jù)庫數(shù)據(jù)進(jìn)行導(dǎo)出,而EasyExcel就是一款非常好用的Java開源庫,它可以幫助我們將數(shù)據(jù)導(dǎo)出為Excel文件。而對于一些前后端分離的應(yīng)用,前端需要導(dǎo)出的數(shù)據(jù)一般都是JSON格式的,這時我們該如何使用EasyExcel進(jìn)行導(dǎo)出呢?
首先我們需要明確一點:EasyExcel并不僅只能從數(shù)據(jù)庫中讀取數(shù)據(jù),它同樣可以讀取Java中的集合類型。因此,我們可以在后端將數(shù)據(jù)庫中讀取到的數(shù)據(jù)轉(zhuǎn)換為對應(yīng)的JSON格式,然后將其讀取到Java中的List中,最后再使用EasyExcel進(jìn)行導(dǎo)出。
List<JSONObject> datas = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { JSONObject obj = new JSONObject(); obj.put("id", list.get(i).getId()); obj.put("name", list.get(i).getName()); obj.put("age", list.get(i).getAge()); datas.add(obj); }
上面的代碼中,我們使用了阿里巴巴的FastJson對查詢出來的List進(jìn)行了轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)被存儲在List<JSONObject>類型的datas變量中。
接下來,我們可以將datas作為數(shù)據(jù)源,使用EasyExcel進(jìn)行導(dǎo)出操作。下面是一個簡單的示例代碼:
// 創(chuàng)建workbook Workbook workbook = new SXSSFWorkbook(); // 創(chuàng)建sheet Sheet sheet = workbook.createSheet("導(dǎo)出數(shù)據(jù)"); // 創(chuàng)建header Row row0 = sheet.createRow(0); row0.createCell(0).setCellValue("ID"); row0.createCell(1).setCellValue("姓名"); row0.createCell(2).setCellValue("年齡"); // 寫入數(shù)據(jù) for (int i = 0; i < datas.size(); i++) { JSONObject obj = datas.get(i); Row row = sheet.createRow(i + 1); row.createCell(0).setCellValue(obj.getInteger("id")); row.createCell(1).setCellValue(obj.getString("name")); row.createCell(2).setCellValue(obj.getInteger("age")); } // 輸出文件 workbook.write(outputStream); workbook.close();
上面的代碼中,我們首先創(chuàng)建了一個SXSSFWorkbook對象作為導(dǎo)出的文件,然后創(chuàng)建了一個sheet,命名為“導(dǎo)出數(shù)據(jù)”。
接下來,我們創(chuàng)建了表頭行,并設(shè)置了三列的列名。然后,我們開始遍歷datas中的每個JSONObject對象,并將其中的id、name和age屬性寫入到Excel對應(yīng)的單元格中。
最后一步,我們將workbook寫入到response的輸出流中,即可實現(xiàn)在后端將JSON格式數(shù)據(jù)導(dǎo)出為Excel文件的功能。