1. 程式人生 > >Execl的匯入,基於POI的一個簡單的實現

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();
}
}