From 2b430bf3f4d6e84bd7ad351a6bcdd1d3a08c4630 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 17 二月 2024 10:38:22 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java |   93 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 67 insertions(+), 26 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java
index ad6384a..c74ac0a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java
@@ -1,48 +1,89 @@
 package com.zy.asrs.wcs.utils;
 
+import com.zy.asrs.framework.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
 
 /**
  * Created by vincent on 2/17/2024
  */
 public class ExcelUtil {
 
-    public static Workbook create() {
-        // 鍒涘缓 Workbook 鍜� Sheet
+    public static void build(Workbook workbook, HttpServletResponse response) {
+        response.reset();
+        Utils.cors(response);
+        response.setContentType("application/octet-stream; charset=utf-8");
+        try {
+            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("export", "UTF-8"));
+            workbook.write(response.getOutputStream());
+        } catch (IOException ignore) {}
+    }
+
+    public static <T> Workbook create(List<T> list, Class<T> clz) {
         HSSFWorkbook workbook = new HSSFWorkbook();
-        Sheet sheet = workbook.createSheet("杩愮淮鎶ヨ〃");
+        Sheet sheet = workbook.createSheet(clz.getSimpleName());
 
-        // 鍒涘缓琛ㄥご
         Row header = sheet.createRow(0);
-        header.createCell(0).setCellValue("濮撳悕");
-        header.createCell(1).setCellValue("骞撮緞");
-        header.createCell(2).setCellValue("鎬у埆");
-        header.createCell(3).setCellValue("鑱屼綅");
+        Field[] fields = Cools.getAllFields(clz);
+        int headerIdx = 0;
+        for (Field field : fields) {
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())) {
+                continue;
+            }
+            String memo = "鏈煡";
+            if (field.isAnnotationPresent(ApiModelProperty.class)) {
+                memo = field.getAnnotation(ApiModelProperty.class).value();
+            }
+            header.createCell(headerIdx).setCellValue(memo);
+            headerIdx++;
+        }
 
-        // 娣诲姞涓�浜涙暟鎹�
-        Row row1 = sheet.createRow(1);
-        row1.createCell(0).setCellValue("寮犱笁");
-        row1.createCell(1).setCellValue(28);
-        row1.createCell(2).setCellValue("鐢�");
-        row1.createCell(3).setCellValue("杩愮淮宸ョ▼甯�");
+        int rowIndex = 1;
+        for (T t : list) {
+            Row row = sheet.createRow(rowIndex++);
 
-        Row row2 = sheet.createRow(2);
-        row2.createCell(0).setCellValue("鏉庡洓");
-        row2.createCell(1).setCellValue(32);
-        row2.createCell(2).setCellValue("濂�");
-        row2.createCell(3).setCellValue("椤圭洰缁忕悊");
+            int cellIndex = 0;
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers())
+                        || Modifier.isStatic(field.getModifiers())
+                        || Modifier.isTransient(field.getModifiers())) {
+                    continue;
+                }
 
-        Row row3 = sheet.createRow(3);
-        row3.createCell(0).setCellValue("鐜嬩簲");
-        row3.createCell(1).setCellValue(25);
-        row3.createCell(2).setCellValue("鐢�");
-        row3.createCell(3).setCellValue("寮�鍙戝伐绋嬪笀");
+                field.setAccessible(true);  // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃�
+                Object value = null;
+                try {
+                    value = field.get(t);
+                } catch (IllegalAccessException e) {
+                    e.printStackTrace();
+                }
+                if (value != null) {
+                    if (value instanceof Date) {
+                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                        row.createCell(cellIndex).setCellValue(sdf.format((Date) value));
+                    } else {
+                        row.createCell(cellIndex).setCellValue(value.toString());
+                    }
+                }
+                cellIndex++;
+            }
+        }
 
-        // 鎵ц鍗曞厓鏍艰嚜鍔ㄥ垪瀹�
-        for (int i = 0; i <= 3; i++) {
+        for (int i = 0; i <= fields.length; i++) {
             sheet.autoSizeColumn(i);
         }
 

--
Gitblit v1.9.1