From fbdd6af3039a83cd4727a03cecb7c5914277371f Mon Sep 17 00:00:00 2001
From: qirong <2032486488@qq.com>
Date: 星期五, 28 七月 2023 14:44:08 +0800
Subject: [PATCH] 个人练习模板功能

---
 src/main/java/com/mindskip/xzs/utility/excel/ExcelUtils.java |  109 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 107 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/utility/excel/ExcelUtils.java b/src/main/java/com/mindskip/xzs/utility/excel/ExcelUtils.java
index f2f1b2d..cd48306 100644
--- a/src/main/java/com/mindskip/xzs/utility/excel/ExcelUtils.java
+++ b/src/main/java/com/mindskip/xzs/utility/excel/ExcelUtils.java
@@ -4,8 +4,10 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import org.apache.poi.hssf.usermodel.HSSFDataValidation;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import com.mindskip.xzs.domain.vo.AnswerVO;
+import com.mindskip.xzs.domain.vo.UserCountExcelVO;
+import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
@@ -14,15 +16,18 @@
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.http.MediaType;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URL;
+import java.net.URLEncoder;
 import java.text.NumberFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -999,5 +1004,105 @@
         return s.trim();
     }
 
+    /**
+     * 鎷嗚В骞跺鍑哄閲岴xcel
+     */
+    public static void exportManySheetExcel(String fileName, List<ExcelSheet> mysheets, HttpServletResponse response, HttpServletRequest request) {
+        //鍒涘缓宸ヤ綔钖�
+        HSSFWorkbook wb = new HSSFWorkbook();
+        //琛ㄥご鏍峰紡
+        HSSFCellStyle style = wb.createCellStyle();
+        // 鍨傜洿
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 姘村钩
+        style.setAlignment(HorizontalAlignment.CENTER);
+        //瀛椾綋鏍峰紡
+        HSSFFont fontStyle = wb.createFont();
+        fontStyle.setFontName("寰蒋闆呴粦");
+        fontStyle.setFontHeightInPoints((short) 12);
+        style.setFont(fontStyle);
+        for (ExcelSheet excel : mysheets) {
+            //鏂板缓涓�涓猻heet
+            //鑾峰彇璇heet鍚嶇О
+            HSSFSheet sheet = wb.createSheet(excel.getFileName());
+            //鑾峰彇sheet鐨勬爣棰樺悕
+            String[] handers = excel.getHanders();
+            //绗竴涓猻heet鐨勭涓�琛屼负鏍囬
+            HSSFRow rowFirst = sheet.createRow(0);
+            //鍐欐爣棰�
+            for (int i = 0; i < handers.length; i++) {
+                //鑾峰彇绗竴琛岀殑姣忎釜鍗曞厓鏍�
+                HSSFCell cell = rowFirst.createCell(i);
+                //寰�鍗曞厓鏍奸噷鍐欐暟鎹�
+                cell.setCellValue(handers[i]);
+                //鍔犳牱寮�
+                cell.setCellStyle(style);
+                //璁剧疆姣忓垪鐨勫垪瀹�
+                sheet.setColumnWidth(i, 4000);
+            }
+            //鍐欐暟鎹泦
+            List<String[]> dataset = excel.getDataset();
+            for (int i = 0; i < dataset.size(); i++) {
+                //鑾峰彇璇ュ璞�
+                String[] data = dataset.get(i);
+                //鍒涘缓鏁版嵁琛�
+                HSSFRow row = sheet.createRow(i + 1);
+                for (int j = 0; j < data.length; j++) {
+                    //璁剧疆瀵瑰簲鍗曞厓鏍肩殑鍊�
+                    row.createCell(j).setCellValue(data[j]);
+                }
+            }
+        }
+
+        // 涓嬭浇鏂囦欢璋锋瓕鏂囦欢鍚嶄細涔辩爜,鐢↖E
+        try {
+
+//            String agent = request.getHeader("USER-AGENT").toLowerCase();
+//            response.setContentType("application/vnd.ms-excel");
+//            String codedFileName = URLEncoder.encode(fileName, "UTF-8");
+//            if (agent.contains("firefox")) {
+//            response.addHeader("content-type", "application/x-msdownload;");
+//                response.setCharacterEncoding("utf-8");
+//                response.setHeader("content-disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xlsx" );
+//            } else {
+//                response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xlsx");
+//            }
+//            response.flushBuffer();
+//            wb.write(response.getOutputStream());
+//            wb.close();
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8"));
+            response.setHeader("Cache-Control", "No-cache");
+            response.flushBuffer();
+            wb.write(response.getOutputStream());
+            wb.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static List<String[]> listEntitiesToStringArray(List<UserCountExcelVO> entityList) {
+        List<String[]> list = new ArrayList<>();
+        entityList.forEach(e->{
+            String[] strings = new String[3];
+            strings[0] = e.getName();
+            strings[1] = e.getUserName();
+            strings[2] = e.getCount();
+            list.add(strings);
+        });
+        return list;
+    }
+
+    public static List<String[]> answerToString(List<AnswerVO> entityList) {
+        List<String[]> list = new ArrayList<>();
+        entityList.forEach(e->{
+            String[] strings = new String[3];
+            strings[0] = e.getPaperScore();
+            strings[1] = e.getUserScore();
+            strings[2] = e.getDoTime();
+            list.add(strings);
+        });
+        return list;
+    }
 
 }

--
Gitblit v1.8.0