李宇
2021-11-12 af607e09de61badbaef57bc0d38002e48a44ac4c
src/main/java/com/nanometer/smartlab/util/ExcelUtils.java
@@ -3,24 +3,28 @@
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.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 {
    public static HSSFWorkbook exportExcelNew(Map<String, String> map, List<Map> dataList, String name){
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
    public static SXSSFWorkbook exportExcelNew(Map<String, String> map, List<Map> dataList, String name){
        SXSSFWorkbook sb = new SXSSFWorkbook(1000);
        Integer total = null;
        //sheet名字
        HSSFSheet sheet = hssfWorkbook.createSheet(name);
        HSSFRow titlerRow = sheet.createRow(0);
        SXSSFSheet sheet = sb.createSheet(name);
        SXSSFRow titlerRow = sheet.createRow(0);
        int k = 0;
        for(Map.Entry<String, String> entry:map.entrySet()){
@@ -30,7 +34,7 @@
        }
        //数据
        for (int i = 0; i < dataList.size(); i++) {
            HSSFRow dataRow = sheet.createRow(i + 1);
            SXSSFRow dataRow = sheet.createRow(i + 1);
            int j = 0;
            for(Map.Entry<String, String> entry:map.entrySet()){
                //表头
@@ -41,7 +45,7 @@
        return hssfWorkbook;
        return sb;
    }
@@ -50,7 +54,7 @@
            throw new Exception("没有数据可以导出");
        }
        ServletOutputStream out = null;
        OutputStream out = null;
        InputStream is = null;
        try {
            FacesContext ctx = FacesContext.getCurrentInstance();
@@ -62,18 +66,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();
            SXSSFWorkbook sb = ExcelUtils.exportExcelNew(map, list, name);
            sb.write(out);
            out.flush();
            sb.dispose();// 释放workbook所占用的所有windows资源
            ctx.responseComplete();
        } catch (Exception e) {
            if (is != null) {
                try {