Execl的匯入,基於POI的一個簡單的實現
先把Maven依賴匯入進來
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
這個是在控制器中寫的,只是根據需要所編寫的一個匯入
//這個是匯入execl的頭部的資訊,類似表格的th
@RequestMapping(value = "/export")
public void export(HttpServletResponse response,
@RequestParam(value = "curriculaId", required = true)Integer curriculaId,
@RequestParam(value = "channelId", required = false)Integer channelId,
@RequestParam(value = "startTime", required = false) String startTime,
@RequestParam(value = "endTime", required = false) String endTime) throws IOException {
String [] headers = {"ID","使用者暱稱","購買份數","課程標題","課程購買時間","渠道","課程單價","是否免費"};
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("統計表");
//表格寬度,只是為了看起來舒服一點,不會太擁擠。
sheet.setDefaultColumnWidth(18);
//第一行
HSSFRow row = sheet.createRow(0);
HSSFCellStyle style = workbook.createCellStyle();
//居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
for(int i = 0;i<headers.length;i++) {
HSSFCell cell = row.createCell(i); //建立列頭對應個數的單元格
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text); //設定列頭單元格的值
}
//這裡service返回的是list資料,list裡面是map單體
//這裡根據你們返回的資料做處理
Map<String,Object> map = statisticsService.export(curriculaId, channelId, startTime, endTime);
List<Map<String,Object>> list = (List<Map<String, Object>>) map.get("data");
//第一行
int i = 1;
//資料庫中的條數進行遍到execl中去
for (Map<String, Object> dbmap: list) {
row = sheet.createRow(i);
//value值為字串,這裡需要轉一下,自己寫的時候可以看一下它的方法
row.createCell(0).setCellValue(String.valueOf(dbmap.get("id")));
row.createCell(1).setCellValue(String.valueOf(dbmap.get("nickName")));
row.createCell(2).setCellValue(String.valueOf(dbmap.get("partake")));
row.createCell(3).setCellValue(String.valueOf(dbmap.get("curriculaTitle")));
row.createCell(4).setCellValue(String.valueOf(dbmap.get("createdAt").toString()));
row.createCell(5).setCellValue(String.valueOf(dbmap.get("channelName")));
row.createCell(6).setCellValue(String.valueOf(dbmap.get("price")));
row.createCell(7).setCellValue(String.valueOf(dbmap.get("isGift")));
i++;
}
try {
// 輸出Excel檔案,將其寫入execl
OutputStream output;
output = response.getOutputStream();
response.reset();
String exportName=new SimpleDateFormat("yyyyMMdd").format(new Date())+"統計資料";
String str = new String(exportName.getBytes("gbk"),"ISO-8859-1");
response.setContentType("application/vnd.ms-excel;charset=UTF-8"); // 下載文版型別
response.setHeader("Content-disposition", "attachment; filename=" + str + ".xls");
response.setCharacterEncoding("UTF-8");
workbook.write(output);
output.close();
} catch(Exception e) {
e.printStackTrace();
}
}