⽂件下载的⼯作原理还是依靠了HTTP协议提供了⽂件下载功能。
SpringBoot集成POI,导出excel⽂件⾮常⽅便。⾸先引⼊所需要的poi jar包,然后在Controller层实现相关的业务代码即可。话不多说,直接上代码吧。1.配置pom.xml
2.在controller层添加如下代码:
import org.apache.poi.hssf.usermodel.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletResponse;import java.io.IOException;
/**
* Excel表格导出接⼝
* http://localhost:8080/ExcelDownload * @param response response对象 * @throws IOException 抛IO异常 */
@RequestMapping(\"/ExcelDownload\")
public void excelDownload(HttpServletResponse response) throws IOException { //表头数据
String[] header = {\"姓名\", \"⼯号\", \"性别\", \"出⽣⽇期\", \"⾝份证号码\", \"婚姻状况\",\"民族\",\"籍贯\",\"政治⾯貌\",\"电⼦邮件\",\"电话号码\",\"联系地址\",\"所属部门\",\"职位\",\"职称\",\"聘⽤形式\",\"⼊职⽇期\",\"转正⽇期\",\"合同起始⽇期\",\"合同截⽌⽇期 //声明⼀个⼯作簿
HSSFWorkbook workbook = new HSSFWorkbook(); //⽣成⼀个表格,设置表格名称为\"学⽣表\"
HSSFSheet sheet = workbook.createSheet(\"员⼯表\");
//设置表格列宽度为10个字节
sheet.setDefaultColumnWidth(10); //创建标题的显⽰样式
HSSFCellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFillForegroundColor(IndexedColors.YELLOW.index); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //创建第⼀⾏表头
HSSFRow headrow = sheet.createRow(0);
//遍历添加表头(下⾯模拟遍历学⽣,也是同样的操作过程) for (int i = 0; i < header.length; i++) { //创建⼀个单元格
HSSFCell cell = headrow.createCell(i);
//创建⼀个内容对象
HSSFRichTextString text = new HSSFRichTextString(header[i]); //将内容对象的⽂字内容写⼊到单元格中 cell.setCellValue(text);
cell.setCellStyle(headerStyle); }
//获取所有的employee
List row1.createCell(1).setCellValue(new HSSFRichTextString(emps.get(i).getId().toString())); //第⼆列创建并赋值 row1.createCell(0).setCellValue(new HSSFRichTextString(emps.get(i).getName())); //第三列创建并赋值 row1.createCell(2).setCellValue(new HSSFRichTextString(emps.get(i).getGender())); //第4列创建并赋值 if(emps.get(i).getBirthday() != null){ row1.createCell(3).setCellValue(new HSSFRichTextString(dateFormat.format(emps.get(i).getBirthday()))); } //第5列创建并赋值 row1.createCell(4).setCellValue(new HSSFRichTextString(emps.get(i).getIdCard())); //第6列创建并赋值 row1.createCell(5).setCellValue(new HSSFRichTextString(emps.get(i).getWedlock())); //第7列创建并赋值 System.err.println(emps.get(i).getNationName()); row1.createCell(6).setCellValue(new HSSFRichTextString(emps.get(i).getNationName())); //籍贯 row1.createCell(7).setCellValue(new HSSFRichTextString(emps.get(i).getNativePlace())); //第8列创建并赋值 row1.createCell(8).setCellValue(new HSSFRichTextString(emps.get(i).getPoliticName())); //第9列创建并赋值 row1.createCell(9).setCellValue(new HSSFRichTextString(emps.get(i).getEmail())); //第10列创建并赋值 row1.createCell(10).setCellValue(new HSSFRichTextString(emps.get(i).getPhone())); //第11列创建并赋值 row1.createCell(11).setCellValue(new HSSFRichTextString(emps.get(i).getAddress())); //第12列创建并赋值 row1.createCell(12).setCellValue(new HSSFRichTextString(emps.get(i).getDepartmentName())); //第13列创建并赋值 row1.createCell(13).setCellValue(new HSSFRichTextString(emps.get(i).getPosName())); //第14列创建并赋值 row1.createCell(14).setCellValue(new HSSFRichTextString(emps.get(i).getJobLevelName())); //第15列创建并赋值 if(emps.get(i).getEngageForm() != null){ row1.createCell(15).setCellValue(new HSSFRichTextString(emps.get(i).getEngageForm())); } //第16列创建并赋值-⼊职⽇期 if(emps.get(i).getBeginDate()!= null){ row1.createCell(16).setCellValue(new HSSFRichTextString(dateFormat.format(emps.get(i).getBeginDate()))); } //转正⽇期 if(emps.get(i).getConversionTime() != null){ row1.createCell(17).setCellValue(new HSSFRichTextString(dateFormat.format(emps.get(i).getConversionTime()))); } //合同起始⽇期 if(emps.get(i).getBeginContract() != null){ row1.createCell(18).setCellValue(new HSSFRichTextString(dateFormat.format(emps.get(i).getBeginContract()))); } //合同截⽌⽇期 if(emps.get(i).getEndContract() != null){ row1.createCell(19).setCellValue(new HSSFRichTextString(dateFormat.format(emps.get(i).getEndContract()))); } //第20列创建并赋值-合同期限 if(emps.get(i).getContractTerm() != null){ row1.createCell(20).setCellValue(new HSSFRichTextString(emps.get(i).getContractTerm().toString())); } //第21列创建并赋值-最⾼学历 if( emps.get(i).getTiptopDegree() != null){ row1.createCell(21).setCellValue(new HSSFRichTextString(emps.get(i).getTiptopDegree())); } } //准备将Excel的输出流通过response输出到页⾯下载 //⼋进制输出流 response.setContentType(\"application/octet-stream\"); //这后⾯可以设置导出Excel的名称,此例中名为student.xls response.setHeader(\"Content-disposition\", \"attachment;filename=employee.xls\"); //刷新缓冲 response.flushBuffer(); //workbook将Excel写⼊到response的输出流中,供页⾯下载 workbook.write(response.getOutputStream()); } 4.实现效果图: 还是很简单的! 吾知也有涯 ⽽⽣也⽆涯! 因篇幅问题不能全部显示,请点此查看更多更全内容