From 79d684dca47e22f246e5c5af2b39285345e10c83 Mon Sep 17 00:00:00 2001 From: walon Date: Mon, 25 Oct 2021 17:30:03 +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=8D=E8=AF=86=E5=88=AB=E9=9D=9E=E9=A1=B6=E5=B1=82=E5=A4=9A?= =?UTF-8?q?=E8=A1=8C=E8=AE=B0=E5=BD=95=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/DataSources/Excel/Sheet.cs | 22 ++++++++++++++++++- .../Source/DataSources/Excel/SheetLoadUtil.cs | 2 +- .../Source/DataSources/Excel/Title.cs | 9 ++++++-- src/Luban.Job.Common/Source/Utils/DefUtil.cs | 5 +++++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/Luban.Job.Cfg/Source/DataSources/Excel/Sheet.cs b/src/Luban.Job.Cfg/Source/DataSources/Excel/Sheet.cs index 95afff9..072d108 100644 --- a/src/Luban.Job.Cfg/Source/DataSources/Excel/Sheet.cs +++ b/src/Luban.Job.Cfg/Source/DataSources/Excel/Sheet.cs @@ -69,6 +69,26 @@ namespace Luban.Job.Cfg.DataSources.Excel return new TitleRow(title, fields); } + private static bool IsMultiRowsExtendRow(List row, Title title) + { + if (title.HasSubTitle) + { + foreach (var t in title.SubTitleList) + { + if (!t.SelfMultiRows && !IsMultiRowsExtendRow(row, t)) + { + return false; + } + } + //return title.SubTitleList.All(t => t.SelfMultiRows || IsMultiRowsExtendRow(row, t)); + return true; + } + else + { + return IsBlankRow(row, title.FromIndex, title.ToIndex); + } + } + private IEnumerable>> SplitRows(Title title, List> rows) { List> oneRecordRows = null; @@ -84,7 +104,7 @@ namespace Luban.Job.Cfg.DataSources.Excel } else { - if (title.SubTitleList.All(t => t.SelfMultiRows || IsBlankRow(row, t.FromIndex, t.ToIndex))) + if (IsMultiRowsExtendRow(row, title)) { oneRecordRows.Add(row); } diff --git a/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs b/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs index 942f328..664c4cd 100644 --- a/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs +++ b/src/Luban.Job.Cfg/Source/DataSources/Excel/SheetLoadUtil.cs @@ -421,7 +421,7 @@ namespace Luban.Job.Cfg.DataSources.Excel var fields = new Dictionary(); foreach (var subTitle in title.SubTitleList) { - if (subTitle.Name.StartsWith("__")) + if (!DefUtil.IsNormalFieldName(subTitle.Name)) { continue; } diff --git a/src/Luban.Job.Cfg/Source/DataSources/Excel/Title.cs b/src/Luban.Job.Cfg/Source/DataSources/Excel/Title.cs index 7336da2..97dd062 100644 --- a/src/Luban.Job.Cfg/Source/DataSources/Excel/Title.cs +++ b/src/Luban.Job.Cfg/Source/DataSources/Excel/Title.cs @@ -1,4 +1,5 @@ using Bright.Collections; +using Luban.Job.Common.Utils; using System; using System.Collections.Generic; using System.Linq; @@ -72,8 +73,12 @@ namespace Luban.Job.Cfg.DataSources.Excel { if (Root) { - // 第一个字段一般为key,为了避免失误将空单元格当作key=0的数据,默认非空 - SubTitleList[0].Tags.TryAdd("non_empty", "1"); + var firstField = SubTitleList.FirstOrDefault(f => DefUtil.IsNormalFieldName(f.Name)); + if (firstField != null) + { + // 第一个字段一般为key,为了避免失误将空单元格当作key=0的数据,默认非空 + firstField.Tags.TryAdd("non_empty", "1"); + } } foreach (var sub in SubTitleList) { diff --git a/src/Luban.Job.Common/Source/Utils/DefUtil.cs b/src/Luban.Job.Common/Source/Utils/DefUtil.cs index eeeab80..affa8fe 100644 --- a/src/Luban.Job.Common/Source/Utils/DefUtil.cs +++ b/src/Luban.Job.Common/Source/Utils/DefUtil.cs @@ -81,5 +81,10 @@ namespace Luban.Job.Common.Utils } } } + + public static bool IsNormalFieldName(string name) + { + return !name.StartsWith("__"); + } } }