搜索
您的当前位置:首页Springboot生成并导出Excel(使用POI)

Springboot生成并导出Excel(使用POI)

来源:智榕旅游
Springboot⽣成并导出Excel(使⽤POI)

  ⽂件下载的⼯作原理还是依靠了HTTP协议提供了⽂件下载功能。

   SpringBoot集成POI,导出excel⽂件⾮常⽅便。⾸先引⼊所需要的poi jar包,然后在Controller层实现相关的业务代码即可。话不多说,直接上代码吧。1.配置pom.xml

org.apache.poi poi 3.17

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 emps=employeeService.getAllEmpNonLimit(); for(int i=0;iHSSFRow row1 = sheet.createRow(i+1); //第⼀列创建并赋值

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.实现效果图:

还是很简单的!

吾知也有涯 ⽽⽣也⽆涯!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top