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

猜你喜欢

转载自blog.csdn.net/Fristname1/article/details/80569370