From 0b63b1fcb33edfd924416b81d4d5755cf2c8646e Mon Sep 17 00:00:00 2001 From: walon Date: Thu, 10 Feb 2022 12:00:42 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91=E8=B0=83?= =?UTF-8?q?=E6=95=B4&=E4=B8=8E#=E7=9A=84=E5=88=86=E5=89=B2=E8=AF=AD?= =?UTF-8?q?=E6=B3=95=E3=80=82=E9=99=A4=E4=BA=86=E5=AE=9A=E4=B9=89=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=9A=84=E9=9D=9Etype=E4=BB=A5=E5=A4=96=E7=9A=84?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=94=A8&=EF=BC=8C=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=9C=B0=E6=96=B9=E9=83=BD=E7=94=A8#=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/DataSources/Excel/SheetLoadUtil.cs | 20 ++++++++++++++++--- src/Luban.Job.Cfg/Source/Defs/CfgDefLoader.cs | 3 +-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs b/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs index 018f9bb..c7c4b71 100644 --- a/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs +++ b/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs @@ -90,6 +90,8 @@ namespace Luban.Job.Cfg.DataSources.Excel "##", }; + private const char s_sep = '#'; + private static void ValidateTitles(List> rows) { foreach (var row in rows) @@ -166,7 +168,11 @@ namespace Luban.Job.Cfg.DataSources.Excel { break; } - var tags = rowTag.Substring(2).Split('&').Select(s => s.Trim()).Where(s => !string.IsNullOrEmpty(s)).ToList(); + if (rowTag.Substring(2).IndexOf('&') >= 0) + { + throw new Exception($"excel标题头不再使用'&'作为分割符,请改为'{s_sep}'"); + } + var tags = rowTag.Substring(2).Split(s_sep).Select(s => s.Trim()).Where(s => !string.IsNullOrEmpty(s)).ToList(); if (tags.Contains("field") || tags.Contains("var") || tags.Contains("+")) { rowIndex = i; @@ -214,7 +220,11 @@ namespace Luban.Job.Cfg.DataSources.Excel public static (string Name, Dictionary Tags) ParseNameAndMetaAttrs(string nameAndAttrs) { - var attrs = nameAndAttrs.Split('&'); + if (nameAndAttrs.Contains('&')) + { + throw new Exception($"excel标题头不再使用'&'作为分割符,请改为'{s_sep}'"); + } + var attrs = nameAndAttrs.Split(s_sep); string titleName = attrs[0]; var tags = new Dictionary(); @@ -372,7 +382,11 @@ namespace Luban.Job.Cfg.DataSources.Excel { return false; } - foreach (var attr in metaStr.Substring(2).Split('&')) + if (metaStr.Substring(2).Contains('&')) + { + throw new Exception($"excel标题头不再使用'&'作为分割符,请改为'{s_sep}'"); + } + foreach (var attr in metaStr.Substring(2).Split(s_sep)) { if (string.IsNullOrWhiteSpace(attr)) { diff --git a/src/Luban.Job.Cfg/Source/Defs/CfgDefLoader.cs b/src/Luban.Job.Cfg/Source/Defs/CfgDefLoader.cs index 43c6697..8ef2708 100644 --- a/src/Luban.Job.Cfg/Source/Defs/CfgDefLoader.cs +++ b/src/Luban.Job.Cfg/Source/Defs/CfgDefLoader.cs @@ -355,8 +355,7 @@ namespace Luban.Job.Cfg.Defs case "range": case "sep": { - cf.Type = cf.Type + "#(" + attrs[i] + ")"; - break; + throw new Exception($"table:'{table.Name}' file:{file.OriginFile} title:'{name}' attr:'{attrName}' 属于type的属性,必须用#分割,尝试'{cf.Type}#{attrs[i]}'"); } case "group": {