From 4e8da8055692c845345f48e891850b6a685977be Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 25 六月 2026 15:43:51 +0800
Subject: [PATCH] update

---
 admin-server/src/main/java/com/estate/expert/admin/io/processor/RowDataProcessorBase.java |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/admin-server/src/main/java/com/estate/expert/admin/io/processor/RowDataProcessorBase.java b/admin-server/src/main/java/com/estate/expert/admin/io/processor/RowDataProcessorBase.java
index a3f4b8a..790eb1a 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/io/processor/RowDataProcessorBase.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/io/processor/RowDataProcessorBase.java
@@ -16,6 +16,18 @@
 
     protected abstract List<String> buildRowData(T data);
 
+    /**
+     * 构建行数据(支持不同类型)
+     * 子类可以重写此方法以返回包含不同类型数据的列表(如数字、字符串等)
+     * 如果子类重写了此方法,writeSheet 将使用此方法而不是 buildRowData
+     *
+     * @param data 数据对象
+     * @return 行数据列表,可以包含 String、Number 等类型
+     */
+    protected List<Object> buildRowDataObjects(T data) {
+        return null;
+    }
+
     protected T parseRowData(int rowIndex, List<String> rowData) {
         return null;
     }
@@ -55,7 +67,16 @@
 
         int index = 1;
         for (var d : data) {
-            var rowData = buildRowData(d);
+            // 优先使用 buildRowDataObjects,如果未实现则使用 buildRowData
+            List<Object> rowDataObjects = buildRowDataObjects(d);
+            List<?> rowData;
+
+            if (rowDataObjects != null) {
+                rowData = rowDataObjects;
+            } else {
+                rowData = buildRowData(d);
+            }
+
             if (rowData == null)
                 continue;
 
@@ -65,7 +86,19 @@
 
             var row = sheet.createRow(index++);
             for (int i = 0; i < rowData.size(); i++) {
-                row.createCell(i).setCellValue(rowData.get(i));
+                var cell = row.createCell(i);
+                var value = rowData.get(i);
+
+                // 根据数据类型设置单元格值
+                if (value == null || value.equals("-")) {
+                    cell.setCellValue("-");
+                } else if (value instanceof Number) {
+                    cell.setCellValue(((Number) value).doubleValue());
+                } else if (value instanceof Boolean) {
+                    cell.setCellValue((Boolean) value);
+                } else {
+                    cell.setCellValue(value.toString());
+                }
             }
         }
     }

--
Gitblit v1.7.1