kongzy
2024-07-01 47a751cb301d05276ae5d75145d57b2d090fe4e1
src/main/java/com/nanometer/smartlab/util/ExcelUtils.java
@@ -3,23 +3,35 @@
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ExcelUtils {
    static {
        System.setProperty("java.awt.headless", "false");
    }
    public static HSSFWorkbook exportExcelNew(Map<String, String> map, List<Map> dataList, String name){
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
     //   SXSSFWorkbook sb = new SXSSFWorkbook(1000);
        Integer total = null;
        //sheet名字
        HSSFSheet sheet = hssfWorkbook.createSheet(name);
//        SXSSFSheet sheet = sb.createSheet(name);
//        SXSSFRow titlerRow = sheet.createRow(0);
        HSSFWorkbook sb = new HSSFWorkbook();
        HSSFSheet sheet = sb.createSheet(name);
        HSSFRow titlerRow = sheet.createRow(0);
        int k = 0;
@@ -30,6 +42,7 @@
        }
        //数据
        for (int i = 0; i < dataList.size(); i++) {
           // SXSSFRow dataRow = sheet.createRow(i + 1);
            HSSFRow dataRow = sheet.createRow(i + 1);
            int j = 0;
            for(Map.Entry<String, String> entry:map.entrySet()){
@@ -41,7 +54,7 @@
        return hssfWorkbook;
        return sb;
    }
@@ -50,7 +63,7 @@
            throw new Exception("没有数据可以导出");
        }
        ServletOutputStream out = null;
        OutputStream out = null;
        InputStream is = null;
        try {
            FacesContext ctx = FacesContext.getCurrentInstance();
@@ -62,18 +75,18 @@
            StringBuffer contentDisposition = new StringBuffer();
            contentDisposition.append("attachment;");
            contentDisposition.append("filename=\"");
            contentDisposition.append(name).append(".xls");
            contentDisposition.append(name).append(".xlsx");
            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();
            Workbook sb = ExcelUtils.exportExcelNew(map, list, name);
            sb.write(out);
            out.flush();
       //     sb.dispose();// 释放workbook所占用的所有windows资源
            ctx.responseComplete();
        } catch (Exception e) {
            if (is != null) {
                try {