公司业务开发,根据客户要求需要实现导出功能,由于用的是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调用后台就自己写吧,这个是个例,如果当业务中出现多个页面都需要此功能的话,可以写成工具类来解决,工具类的方法我也写好了,暂时没有上传,需要的话私聊即可,很乐意帮助大家!!!谢谢支持!
网友评论