diff --git a/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs index e36cee0..3caa585 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/ExcelDataCreator.cs @@ -343,7 +343,7 @@ namespace Luban.Job.Cfg.DataCreators } catch (Exception e) { - var dce = new DataCreateException(e, stream.CurrentExcelPosition); + var dce = new DataCreateException(e, stream.LastReadDataInfo); dce.Push(bean, f); throw dce; } diff --git a/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs index a92999f..be81748 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/ExcelNamedRowDataCreator.cs @@ -187,7 +187,7 @@ namespace Luban.Job.Cfg.DataCreators } catch (Exception e) { - var dce = new DataCreateException(e, stream.CurrentExcelPosition); + var dce = new DataCreateException(e, stream.LastReadDataInfo); dce.Push(bean, f); throw dce; } diff --git a/src/Luban.Job.Cfg/Source/DataCreators/MultiRowExcelDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/MultiRowExcelDataCreator.cs index bb581e9..9b8211d 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/MultiRowExcelDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/MultiRowExcelDataCreator.cs @@ -98,7 +98,7 @@ namespace Luban.Job.Cfg.DataCreators } catch (Exception e) { - var dce = new DataCreateException(e, stream.CurrentExcelPosition); + var dce = new DataCreateException(e, stream.LastReadDataInfo); throw dce; } } @@ -133,7 +133,7 @@ namespace Luban.Job.Cfg.DataCreators } catch (Exception e) { - var dce = new DataCreateException(e, stream.CurrentExcelPosition); + var dce = new DataCreateException(e, stream.LastReadDataInfo); throw dce; } } diff --git a/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelStream.cs b/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelStream.cs index 504f086..94a51a8 100644 --- a/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelStream.cs +++ b/src/Luban.Job.Cfg/Source/DataSources/Excel/ExcelStream.cs @@ -6,6 +6,11 @@ using System.Text; namespace Luban.Job.Cfg.DataSources.Excel { + class DataNotEnoughException : System.Exception + { + + } + class ExcelStream { @@ -80,7 +85,9 @@ namespace Luban.Job.Cfg.DataSources.Excel public string First => _datas[_curIndex].Value?.ToString(); - public string CurrentExcelPosition => _datas[Math.Min(_curIndex, _datas.Count - 1)].ToString(); + public string LastReadDataInfo => _datas[Math.Min(LastReadIndex, _datas.Count - 1)].ToString(); + + private int LastReadIndex { get; set; } public int IncludeNullAndEmptySize => _toIndex - _curIndex + 1; @@ -106,9 +113,11 @@ namespace Luban.Job.Cfg.DataSources.Excel data = _datas[_curIndex++].Value; if (!IsSkip(data)) { + LastReadIndex = _curIndex - 1; return true; } } + LastReadIndex = _curIndex - 1; return false; } @@ -127,7 +136,7 @@ namespace Luban.Job.Cfg.DataSources.Excel private object ReadMayNull() { - return _curIndex <= _toIndex ? _datas[_curIndex++].Value : null; + return _curIndex <= _toIndex ? _datas[LastReadIndex = _curIndex++].Value : null; } //public object Read(bool nullable) @@ -142,9 +151,11 @@ namespace Luban.Job.Cfg.DataSources.Excel var data = _datas[_curIndex++]; if (!IsSkip(data.Value)) { + LastReadIndex = _curIndex - 1; return data; } } + LastReadIndex = _curIndex - 1; throw new Exception($"cell:{_datas[_curIndex - 1]} 缺少数据"); } @@ -155,9 +166,11 @@ namespace Luban.Job.Cfg.DataSources.Excel var data = _datas[_curIndex++]; if (!IsSkip(data.Value)) { + LastReadIndex = _curIndex - 1; return data.Value; } } + LastReadIndex = _curIndex - 1; throw new Exception($"cell:{_datas[_curIndex - 1]} 缺少数据"); } @@ -180,6 +193,7 @@ namespace Luban.Job.Cfg.DataSources.Excel { if (value == END_OF_LIST) { + LastReadIndex = _curIndex - 1; return true; } else