From 8124c458cf477dfd4142a6b84af28d66288b585a Mon Sep 17 00:00:00 2001 From: gdg <764716047@qq.com> Date: 星期二, 08 十二月 2020 17:00:53 +0800 Subject: [PATCH] primefaces的导出工具 --- src/main/java/com/nanometer/smartlab/util/ExcelUtils.java | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 110 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/util/ExcelUtils.java b/src/main/java/com/nanometer/smartlab/util/ExcelUtils.java new file mode 100644 index 0000000..ba95396 --- /dev/null +++ b/src/main/java/com/nanometer/smartlab/util/ExcelUtils.java @@ -0,0 +1,110 @@ +package com.nanometer.smartlab.util; + +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import javax.faces.context.FacesContext; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public class ExcelUtils { + + public static HSSFWorkbook exportExcelNew(Map<String, String> map, List<Map> dataList, String name){ + HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); + Integer total = null; + //sheet名字 + HSSFSheet sheet = hssfWorkbook.createSheet(name); + HSSFRow titlerRow = sheet.createRow(0); + + int k = 0; + for(Map.Entry<String, String> entry:map.entrySet()){ + //表头 + titlerRow.createCell(k).setCellValue(entry.getValue()); + k++; + } + //数据 + for (int i = 0; i < dataList.size(); i++) { + HSSFRow dataRow = sheet.createRow(i + 1); + int j = 0; + for(Map.Entry<String, String> entry:map.entrySet()){ + //表头 + dataRow.createCell(j).setCellValue(dataList.get(i).get(entry.getKey()) == null ? "" : String.valueOf(dataList.get(i).get(entry.getKey()))); + j++; + } + } + + + + return hssfWorkbook; + } + + + public static void export2Excel(List<Map> list, String name, Map<String, String> map) throws Exception { + if (list == null || list.size() == 0) { + throw new Exception("没有数据可以导出"); + } + + ServletOutputStream out = null; + InputStream is = null; + try { + FacesContext ctx = FacesContext.getCurrentInstance(); + ctx.responseComplete(); + String contentType = "application/x-download"; + HttpServletResponse response = (HttpServletResponse) ctx + .getExternalContext().getResponse(); + response.setContentType(contentType); + StringBuffer contentDisposition = new StringBuffer(); + contentDisposition.append("attachment;"); + contentDisposition.append("filename=\""); + contentDisposition.append(name).append(".xls"); + contentDisposition.append("\""); + response.setHeader( + "Content-Disposition", + new String(contentDisposition.toString().getBytes( + System.getProperty("file.encoding")), "ISO8859-1")); + out = response.getOutputStream(); + HSSFWorkbook hssfWorkbook = ExcelUtils.exportExcelNew(map, list, name); + hssfWorkbook.write(out); +// out.flush(); + ctx.responseComplete(); + + } catch (Exception e) { + if (is != null) { + try { + is.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + if (out != null) { + try { + out.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } +} -- Gitblit v1.9.2