From e997eee6b747c343e432783111371aca0bd89306 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期二, 29 六月 2021 13:15:24 +0800
Subject: [PATCH] 导出试剂

---
 src/main/java/com/nanometer/smartlab/util/ExcelUtils.java |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/util/ExcelUtils.java b/src/main/java/com/nanometer/smartlab/util/ExcelUtils.java
index ba95396..4ba663e 100644
--- a/src/main/java/com/nanometer/smartlab/util/ExcelUtils.java
+++ b/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 {

--
Gitblit v1.9.2