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