From abf10a2a19594f43ebe4f0dbd509a8c7faf81efc Mon Sep 17 00:00:00 2001 From: PIGCLOUD Date: Fri, 2 Oct 2026 23:11:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(excel-converters):=20=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E5=86=85=E7=BD=AE=E8=BD=AC=E6=8D=A2=E5=99=A8=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=20StringArrayConverter.WRITE=5FINST?= =?UTF-8?q?ANCE=20-=20=E6=B3=A8=E5=86=8C=20StringArrayConverter.WRITE=5FIN?= =?UTF-8?q?STANCE=20=E5=88=B0=20Excel=20=E5=86=99=E6=9E=84=E9=80=A0?= =?UTF-8?q?=E5=99=A8=20-=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 3800300f7f101560674dacc6a0840e279b753a2e) --- .../excel/converters/BuiltinConverters.java | 47 +++++++++---------- .../converters/StringArrayConverter.java | 22 ++++++--- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/BuiltinConverters.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/BuiltinConverters.java index 328b82499..f1523900b 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/BuiltinConverters.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/BuiltinConverters.java @@ -13,32 +13,31 @@ import java.util.List; */ public final class BuiltinConverters { - private BuiltinConverters() { - } + private BuiltinConverters() { + } - /** - * 读写 Excel 时默认启用的转换器列表。 - */ - private static final List> INSTANCES = List.of(LocalDateStringConverter.INSTANCE, - LocalTimeStringConverter.INSTANCE, LocalDateTimeStringConverter.INSTANCE, LongStringConverter.INSTANCE, - StringArrayConverter.INSTANCE); + /** + * 读写 Excel 时默认启用的转换器列表。 + */ + private static final List> INSTANCES = List.of(LocalDateStringConverter.INSTANCE, + LocalTimeStringConverter.INSTANCE, LocalDateTimeStringConverter.INSTANCE, LongStringConverter.INSTANCE, + StringArrayConverter.INSTANCE); - /** - * 注册内置转换器到 Excel 写构造器。 - * - * @param builder Excel 写构造器 - */ - public static void registerTo(ExcelWriterBuilder builder) { - INSTANCES.forEach(builder::registerConverter); - } + /** + * 注册内置转换器到 Excel 写构造器。 + * @param builder Excel 写构造器 + */ + public static void registerTo(ExcelWriterBuilder builder) { + INSTANCES.forEach(builder::registerConverter); + builder.registerConverter(StringArrayConverter.WRITE_INSTANCE); + } - /** - * 注册内置转换器到 Excel 读构造器。 - * - * @param builder Excel 读构造器 - */ - public static void registerTo(ExcelReaderBuilder builder) { - INSTANCES.forEach(builder::registerConverter); - } + /** + * 注册内置转换器到 Excel 读构造器。 + * @param builder Excel 读构造器 + */ + public static void registerTo(ExcelReaderBuilder builder) { + INSTANCES.forEach(builder::registerConverter); + } } diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/StringArrayConverter.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/StringArrayConverter.java index 34a3e5821..3a50b5ae0 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/StringArrayConverter.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/StringArrayConverter.java @@ -18,10 +18,20 @@ public enum StringArrayConverter implements Converter { /** * 实例 */ - INSTANCE; + INSTANCE, + + /** + * 未指定目标单元格类型时,FESOD 使用 null 作为导出转换器的类型键。 + */ + WRITE_INSTANCE { + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return null; + } + }; @Override - public Class supportJavaTypeKey() { + public Class supportJavaTypeKey() { return String[].class; } @@ -31,15 +41,15 @@ public enum StringArrayConverter implements Converter { } @Override - public String[] convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, - GlobalConfiguration globalConfiguration) { - return StrUtil.splitToArray(cellData.getStringValue(), StrUtil.COMMA); + public String[] convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return StrUtil.splitToArray(cellData.getStringValue(), StrUtil.COMMA); } @Override public WriteCellData convertToExcelData(String[] value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { - return new WriteCellData<>(String.join(StrUtil.COMMA, value)); + return new WriteCellData<>(String.join(StrUtil.COMMA, value)); } }