这里记录一个使用POI导出职称数据表的工具类
package com.zhouym.baiwei.utils;
import com.zhouym.baiwei.bean.Joblevel;
import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.hssf.usermodel.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.List;
/**
* 〈〉
*
* @author zhouym
* @create 2019/8/23
* @since 1.0.0
*/
public class POIUtils {
public static ResponseEntity<byte[]> exportData(List<Joblevel> list) throws IOException {
//创建一个xls文件对象
HSSFWorkbook workbook = new HSSFWorkbook();
//创建xls文件信息属性对象
workbook.createInformationProperties();
SummaryInformation info = workbook.getSummaryInformation();
//设置xls文件描述
//设置备注信息
info.setComments("职称数据文件");
//设置文件名
info.setTitle("职称数据");
//设置作者
info.setAuthor("zhouym");
//设置导出时间
info.setCreateDateTime(new Date());
//创建一个sheet对象
HSSFSheet sheet = workbook.createSheet("职称信息");
//设置一行
HSSFRow row = sheet.createRow(0);
//设置一列,以及列名
HSSFCell cell0 = row.createCell(0);
HSSFCell cell1 = row.createCell(1);
HSSFCell cell2 = row.createCell(2);
HSSFCell cell3 = row.createCell(3);
HSSFCell cell4 = row.createCell(4);
cell0.setCellValue("编号");
cell1.setCellValue("职称名称");
cell2.setCellValue("级别");
cell3.setCellValue("创建时间");
cell4.setCellValue("是否可用");
//对日期做格式化处理
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
//遍历集合中的数据
for (int i = 0; i < list.size(); i++) {
Joblevel data = list.get(i);
//设置列及列值数据
HSSFRow rows = sheet.createRow(i + 1);
HSSFCell c0 = rows.createCell(0);
HSSFCell c1 = rows.createCell(1);
HSSFCell c2 = rows.createCell(2);
HSSFCell c3 = rows.createCell(3);
HSSFCell c4 = rows.createCell(4);
//设置日期格式
c3.setCellStyle(cellStyle);
c0.setCellValue(data.getId());
c1.setCellValue(data.getName());
c2.setCellValue(data.getTitlelevel());
c3.setCellValue(data.getCreatedate());
c4.setCellValue(data.getEnabled()?"是":"否");
}
//创建字节数组输出流对象
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//将xls文件写入流中
workbook.write(bos);
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment",new String("职称表.xls".getBytes("UTF-8"),"ISO-8859-1"));
return new ResponseEntity<>(bos.toByteArray(),headers, HttpStatus.CREATED);//201响应码
}
}