前言
- 通过POI的方式将获得的数据转换成Excel表格的形式
步骤
- 直接上代码,Controller层
- 笨蛋的我本来还以为HttpServletResponse还要返回,后来发现根本不用,它会自行返回
@RequestMapping(value = "/exportCableLineInfoByExcel.do")
public void exportCableLineInfoByExcel(EvCableLineInforVo evCableLineInforVo, HttpServletResponse httpServletResponse){
evCablelineinforService.exportCableLineInfoByExcel(evCableLineInforVo,httpServletResponse);
}
@Override
public void exportCableLineInfoByExcel(EvCableLineInforVo evCableLineInforVo,HttpServletResponse httpServletResponse) {
OutputStream outputStream = null;
try {
List<EvCablelineinfor> evCablelineinforList = new ArrayList<>();
;
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
HSSFCellStyle cellStyle = hssfWorkbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
HSSFSheet sheet = hssfWorkbook.createSheet("某某表");
int[] width = {6000, 18000, 7000, 7000, 3000, 4000, 3000, 3000};
String[] str = {"名称1", "名称2", "设备1"};
HSSFRow row1 = sheet.createRow(0);
for (int i = 0; i < str.length; i++) {
sheet.setColumnWidth(i, width[i]);
row1.createCell(i).setCellValue(str[i]);
row1.getCell(i).setCellStyle(cellStyle);
}
for (int i = 0; i < evCablelineinforList.size(); i++) {
EvCablelineinfor evCablelineinfor = evCablelineinforList.get(i);
HSSFRow row2 = sheet.createRow(i + 1);
row2.createCell(0).setCellValue(evCablelineinfor.getLoopname());
row2.createCell(1).setCellValue(evCablelineinfor.getCablelinename());
row2.createCell(2).setCellValue(evCablelineinfor.getStartdevice());
}
outputStream = httpServletResponse.getOutputStream();
httpServletResponse.setContentType("application/x-download");
httpServletResponse.setCharacterEncoding("UTF-8");
httpServletResponse.setHeader("Content-disposition", "attachment;filename=" + new String("某某表".getBytes(), "ISO8859-1") + ".xls");
hssfWorkbook.write(outputStream);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
参考