liujie
2026-06-26 8fbe2f5f29b9658b6201b3daabe2d575c9da88fd
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());
                }
            }
        }
    }