/// <summary> /// 处理正文 /// </summary> /// <param name="sheet">工作表</param> /// <param name="innerSheet">NPOI工作表</param> /// <param name="dataRowStartIndex">数据行起始索引</param> /// <param name="enabledEmptyLine">启用空行模式。启用时,行内遇到空行将抛出异常错误信息</param> private void HandleBody <TTemplate>(IWorkSheet sheet, ISheet innerSheet, int dataRowStartIndex, bool enabledEmptyLine) { var header = sheet.GetHeader().LastOrDefault(); // LastRowNum: 获取最后一行的行数,如果sheet中一行数据都没有则返回-1,只有第一行有数据则返回0,最后有数据的行是第n行则返回n-1 // PhysicalNumberOfRows: 获取有记录的行数,即:最后有数据的行是第n行,前面有m行是空行没数据,则返回n-m for (var i = dataRowStartIndex; i < innerSheet.GetHasDataRowNum() + 1; i++) { var innerRow = innerSheet.GetRow(i); if (CheckEmptyLine(innerRow.IsEmptyRow(), enabledEmptyLine)) { continue; } sheet.AddBodyRow(Convert <TTemplate>(innerRow, header)); } }
/// <summary> /// 处理正文 /// </summary> /// <param name="sheet">工作表</param> /// <param name="innerSheet">NPOI工作表</param> /// <param name="options">导入选项配置</param> private void HandleBody <TTemplate>(IWorkSheet sheet, ISheet innerSheet, IImportOptions options) { var header = sheet.GetHeader().LastOrDefault(); // LastRowNum: 获取最后一行的行数,如果sheet中一行数据都没有则返回-1,只有第一行有数据则返回0,最后有数据的行是第n行则返回n-1 // PhysicalNumberOfRows: 获取有记录的行数,即:最后有数据的行是第n行,前面有m行是空行没数据,则返回n-m for (var i = options.DataRowIndex; i < innerSheet.GetHasDataRowNum() + 1; i++) { var innerRow = innerSheet.GetRow(i); if (CheckIgnoreEmptyLine(options, innerRow.IsEmptyRow())) { break; } if (CheckEmptyLine(innerRow.IsEmptyRow(), options.EnabledEmptyLine, i)) { continue; } sheet.AddBodyRow(Convert <TTemplate>(innerRow, header), innerRow.RowNum); } }