From 4308db1a8338effd6d0168dacfcaa479004c0f21 Mon Sep 17 00:00:00 2001 From: walon Date: Thu, 14 Oct 2021 11:00:43 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dstring=E5=92=8Cenum=E7=B1=BB=E5=9E=8Bdefault=E5=80=BC?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=9A=84bug=20=E3=80=90=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E3=80=91=E4=BF=AE=E5=A4=8D=E5=A4=B1=E8=AF=AF=E5=88=A0=E9=99=A4?= =?UTF-8?q?csv=E7=BC=96=E7=A0=81=E6=A3=80=E6=B5=8B=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=AF=BC=E8=87=B4=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=9D=9E=E6=9C=AC=E5=9C=B0ansi=E7=BC=96=E7=A0=81=E7=9A=84csv?= =?UTF-8?q?=E5=87=BA=E9=94=99=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../Source/DataCreators/ExcelDataCreator.cs | 9 +++++++-- .../DataCreators/ExcelNamedRowDataCreator.cs | 2 +- .../Source/DataSources/Excel/ExcelDataSource.cs | 14 +++++++++++++- src/Luban.Job.Common/Luban.Job.Common.csproj | 2 +- src/LubanAssistant/LubanAssistant.csproj | 3 +++ src/LubanAssistant/packages.config | 1 + 7 files changed, 27 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 830f745..198d08c 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ luban相较于常规的excel导表工具有以下核心优势: - 其他所有支持js的引擎和平台 - 扩展工具 - Excel2TextDiff。将excel转成文本后再diff,清晰对比excel版本之间内容变化。 - - **[开发中,马上...]LubanAssistant**,Luban的Excel插件。支持把json、lua、xml等文本格式的配置数据加载到excel中,批量编辑处理,最后再保存回原文件,较好地解决大型项目中多人合作数据编辑冲突合并的问题,较好解决在编辑器中制作的配置难以在excel中批量修改的问题。 + - **LubanAssistant**,Luban的Excel插件。支持把json、lua、xml等文本格式的配置数据加载到excel中,批量编辑处理,最后再保存回原文件,较好地解决大型项目中多人合作数据编辑冲突合并的问题,较好解决在编辑器中制作的配置难以在excel中批量修改的问题。 ## 增强的excel格式 diff --git a/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs index 7868a46..02bb9be 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs @@ -333,7 +333,7 @@ namespace Luban.Job.Cfg.DataCreators { return null; } - if (CheckIsDefault(type.IsNullable, d) && field?.DefalutDtypeValue != null) + if (CheckIsDefault(x.NamedMode, d) && field?.DefalutDtypeValue != null) { return field?.DefalutDtypeValue; } @@ -346,7 +346,12 @@ namespace Luban.Job.Cfg.DataCreators { throw new InvalidExcelDataException("excel string类型在标题头对应模式下必须正好占据一个单元格"); } - var s = ParseString(x.Read(x.NamedMode)); + var d = x.Read(x.NamedMode); + if (CheckIsDefault(x.NamedMode, d) && field?.DefalutDtypeValue != null) + { + return field.DefalutDtypeValue; + } + var s = ParseString(d); if (s == null) { if (type.IsNullable) diff --git a/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs index 5bbb751..440e170 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs @@ -151,7 +151,7 @@ namespace Luban.Job.Cfg.DataCreators } else { - list.Add(f.CType.Apply(ExcelDataCreator.Ins, null, row.GetMultiRowStream(f.Name, sep, f.IsRowOrient), (DefAssembly)bean.AssemblyBase)); + list.Add(f.CType.Apply(ExcelDataCreator.Ins, f, row.GetMultiRowStream(f.Name, sep, f.IsRowOrient), (DefAssembly)bean.AssemblyBase)); } } catch (DataCreateException dce) diff --git a/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelDataSource.cs b/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelDataSource.cs index 4c34a28..6d38dda 100644 --- a/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelDataSource.cs +++ b/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelDataSource.cs @@ -18,7 +18,19 @@ namespace Luban.Job.Cfg.DataSources.Excel private System.Text.Encoding DetectCsvEncoding(Stream fs) { - return System.Text.Encoding.Default; + Ude.CharsetDetector cdet = new Ude.CharsetDetector(); + cdet.Feed(fs); + cdet.DataEnd(); + fs.Seek(0, SeekOrigin.Begin); + if (cdet.Charset != null) + { + s_logger.Debug("Charset: {}, confidence: {}", cdet.Charset, cdet.Confidence); + return System.Text.Encoding.GetEncoding(cdet.Charset) ?? System.Text.Encoding.Default; + } + else + { + return System.Text.Encoding.Default; + } } public override void Load(string rawUrl, string sheetName, Stream stream) diff --git a/src/Luban.Job.Common/Luban.Job.Common.csproj b/src/Luban.Job.Common/Luban.Job.Common.csproj index afca7bf..1dbcf1a 100644 --- a/src/Luban.Job.Common/Luban.Job.Common.csproj +++ b/src/Luban.Job.Common/Luban.Job.Common.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/LubanAssistant/LubanAssistant.csproj b/src/LubanAssistant/LubanAssistant.csproj index 7e7ebb7..50886c5 100644 --- a/src/LubanAssistant/LubanAssistant.csproj +++ b/src/LubanAssistant/LubanAssistant.csproj @@ -158,6 +158,9 @@ + + ..\packages\Ude.NetStandard.1.2.0\lib\net45\Ude.NetStandard.dll + ..\packages\YamlDotNet.11.2.1\lib\net45\YamlDotNet.dll diff --git a/src/LubanAssistant/packages.config b/src/LubanAssistant/packages.config index 8d15c61..0e2370f 100644 --- a/src/LubanAssistant/packages.config +++ b/src/LubanAssistant/packages.config @@ -13,5 +13,6 @@ + \ No newline at end of file