【调整】调整excel多行记录的判定方式。只有对顶级多行才支持与该记录第一行非多行字段相应单元格值完全相同时,判定该行属于当前记录
parent
0ae7744f6e
commit
5482b0a5de
13
README.md
13
README.md
|
|
@ -80,13 +80,14 @@ Luban适合有以下需求的开发者:
|
||||||
- python (3.0+)
|
- python (3.0+)
|
||||||
- 支持主流引擎和平台
|
- 支持主流引擎和平台
|
||||||
- unity + c#
|
- unity + c#
|
||||||
- unity + tolua、xlua
|
- unity + [tolua](https://github.com/topameng/tolua)、[xlua](https://github.com/Tencent/xLua)
|
||||||
- unity + ILRuntime
|
- unity + [ILRuntime](https://github.com/Ourpalm/ILRuntime)
|
||||||
- unity + puerts
|
- unity + [puerts](https://github.com/Tencent/puerts)
|
||||||
|
- unity + [ET游戏框架](https://github.com/egametang/ET)
|
||||||
- unreal + c++
|
- unreal + c++
|
||||||
- unreal + unlua
|
- unreal + [unlua](https://github.com/Tencent/UnLua)
|
||||||
- unreal + sluaunreal
|
- unreal + [sluaunreal](https://github.com/Tencent/sluaunreal)
|
||||||
- unreal + puerts
|
- unreal + [puerts](https://github.com/Tencent/puerts)
|
||||||
- cocos2d-x + lua
|
- cocos2d-x + lua
|
||||||
- cocos2d-x + js
|
- cocos2d-x + js
|
||||||
- 微信小程序平台
|
- 微信小程序平台
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ namespace Luban.Job.Cfg.DataSources.Excel
|
||||||
|
|
||||||
public class Title
|
public class Title
|
||||||
{
|
{
|
||||||
|
public bool Root { get; set; }
|
||||||
|
|
||||||
public int FromIndex { get; set; }
|
public int FromIndex { get; set; }
|
||||||
|
|
||||||
public int ToIndex { get; set; }
|
public int ToIndex { get; set; }
|
||||||
|
|
@ -134,7 +136,7 @@ namespace Luban.Job.Cfg.DataSources.Excel
|
||||||
{
|
{
|
||||||
var fieldTitle = title.SubTitles[f.Name];
|
var fieldTitle = title.SubTitles[f.Name];
|
||||||
return Sheet.IsBlankRow(row, fieldTitle.FromIndex, fieldTitle.ToIndex);
|
return Sheet.IsBlankRow(row, fieldTitle.FromIndex, fieldTitle.ToIndex);
|
||||||
}) || (recordRows != null && notMultiRowFields.All(f =>
|
}) || (title.Root && recordRows != null && notMultiRowFields.All(f =>
|
||||||
{
|
{
|
||||||
var fieldTitle = title.SubTitles[f.Name];
|
var fieldTitle = title.SubTitles[f.Name];
|
||||||
return Sheet.IsSameRow(row, recordRows[0], fieldTitle.FromIndex, fieldTitle.ToIndex);
|
return Sheet.IsSameRow(row, recordRows[0], fieldTitle.FromIndex, fieldTitle.ToIndex);
|
||||||
|
|
@ -206,7 +208,11 @@ namespace Luban.Job.Cfg.DataSources.Excel
|
||||||
{
|
{
|
||||||
if (Titles.TryGetValue(name, out var title))
|
if (Titles.TryGetValue(name, out var title))
|
||||||
{
|
{
|
||||||
// CheckEmptySinceSecondRow(name, title.FromIndex, title.ToIndex);
|
// 只有顶级root支持才允许非multi_rows字段与第一行相同时,判定为同个记录
|
||||||
|
if (!this.SelfTitle.Root)
|
||||||
|
{
|
||||||
|
CheckEmptySinceSecondRow(name, title.FromIndex, title.ToIndex);
|
||||||
|
}
|
||||||
var es = new ExcelStream(Rows[0], title.FromIndex, title.ToIndex, sep, namedMode);
|
var es = new ExcelStream(Rows[0], title.FromIndex, title.ToIndex, sep, namedMode);
|
||||||
return es;
|
return es;
|
||||||
}
|
}
|
||||||
|
|
@ -216,13 +222,6 @@ namespace Luban.Job.Cfg.DataSources.Excel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//public NamedRow GetSubTitleNamedRow(string name)
|
|
||||||
//{
|
|
||||||
// Title title = this.Titles[name];
|
|
||||||
// CheckEmptySinceSecondRow(name, title.FromIndex, title.ToIndex);
|
|
||||||
// return new NamedRow(title, this.Rows[0]);
|
|
||||||
//}
|
|
||||||
|
|
||||||
public NamedRow GetSubTitleNamedRow(string name)
|
public NamedRow GetSubTitleNamedRow(string name)
|
||||||
{
|
{
|
||||||
Title title = Titles[name];
|
Title title = Titles[name];
|
||||||
|
|
@ -435,6 +434,7 @@ namespace Luban.Job.Cfg.DataSources.Excel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const string ROOT_TITLE_NAME = "__<root>__";
|
||||||
|
|
||||||
private void LoadRemainRows(IExcelDataReader reader, bool headerOnly)
|
private void LoadRemainRows(IExcelDataReader reader, bool headerOnly)
|
||||||
{
|
{
|
||||||
|
|
@ -486,7 +486,7 @@ namespace Luban.Job.Cfg.DataSources.Excel
|
||||||
throw new Exception($"没有定义字段名行");
|
throw new Exception($"没有定义字段名行");
|
||||||
}
|
}
|
||||||
|
|
||||||
_rootTitle = new Title() { Name = "_root_", FromIndex = 1, ToIndex = rows.Select(r => r.Count).Max() - 1 };
|
_rootTitle = new Title() { Root = true, Name = ROOT_TITLE_NAME, FromIndex = 1, ToIndex = rows.Select(r => r.Count).Max() - 1 };
|
||||||
|
|
||||||
int titleRowNum = 1;
|
int titleRowNum = 1;
|
||||||
if (reader.MergeCells != null)
|
if (reader.MergeCells != null)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue