gdg
2020-12-08 8124c458cf477dfd4142a6b84af28d66288b585a
primefaces的导出工具
已添加1个文件
110 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/util/ExcelUtils.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
                }
            }
        }
    }
}