基于spring boot整合poi实现excel导出下载功能

2019-01-07  本文已影响79人  ayinmu

公司业务开发,根据客户要求需要实现导出功能,由于用的是spring boot 框架,以此来写一篇文章实现此功能!(只是简单实现导出,格式要求啥的没做要求,自己根据需要查询文档)希望能帮助广大新手朋友!!!

第一步:spring boot整合poi很简单,网上例子很多,这列不多做赘述,我的例子是:

依赖导入

第二步:前端代码

前端页面代码

第三步:实体类、dao层、service层

实体类 dao层 service层

第四步:controller层

/**

* 导出excel

*/

@RequestMapping("/cexp")

public void expr(HttpServletRequest request, HttpServletResponse response)throws IOException{

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

String fileName = sdf.format(new Date()) +".xlsx";

//声明一个工作簿

    XSSFWorkbook workbook=new XSSFWorkbook();

//自动换行

    XSSFCellStyle setBorder=workbook.createCellStyle();

//生成一表格

    XSSFSheet sheet=workbook.createSheet("频道列表");

XSSFRow row =null;

List channelEntityList=channelService.getChannel();

row=sheet.createRow(0);

//行高

    row.setHeight((short) (26.25*20));

row.createCell(0).setCellValue("ID");

row.createCell(1).setCellValue("频道名称");

row.createCell(2).setCellValue("排序");

if (channelEntityList!=null&&channelEntityList.size()>0){

for (int i=0;i

row=sheet.createRow(i+1);

ChannelEntity channelEntity=channelEntityList.get(i);

row.createCell(0).setCellValue(channelEntity.getChannelId());

row.createCell(1).setCellValue(channelEntity.getName());

row.createCell(2).setCellValue(channelEntity.getSort());

}

}

sheet.setDefaultRowHeight((short) (16.5 *20));

//列宽自适应

    for (int i =0; i <=channelEntityList.size() ; i++) {

sheet.autoSizeColumn(i);

}

try {

// 告诉浏览器用什么软件可以打开此文件

        response.setHeader("content-Type","application/vnd.ms-excel");

// 下载文件的默认名称

        response.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));

}catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

try{

workbook.write(response.getOutputStream());

}catch(Exception e){

workbook.close();

}

}

第五步:以上是简单实现过程(肯定能实现),运行即可,前端js调用后台就自己写吧,这个是个例,如果当业务中出现多个页面都需要此功能的话,可以写成工具类来解决,工具类的方法我也写好了,暂时没有上传,需要的话私聊即可,很乐意帮助大家!!!谢谢支持!

上一篇下一篇

猜你喜欢

热点阅读