/// <summary> /// 构建工作表 /// </summary> /// <typeparam name="TTemplate">导入模板类型</typeparam> /// <param name="workbook">工作簿</param> /// <param name="innerWorkbook">内部工作簿</param> /// <param name="sheetIndex">工作表索引</param> /// <param name="headerRowIndex">表头行索引</param> /// <param name="dataRowStartIndex">数据行起始索引</param> /// <param name="maxColumnLength">最大列长度</param> /// <param name="enabledEmptyLine">启用空行模式。启用时,行内遇到空行将抛出异常错误信息</param> private void BuildSheet <TTemplate>(Bing.Offices.Abstractions.Metadata.Excels.IWorkbook workbook, NPOI.SS.UserModel.IWorkbook innerWorkbook, int sheetIndex, int headerRowIndex, int dataRowStartIndex, int maxColumnLength, bool enabledEmptyLine) { var innerSheet = GetSheet(innerWorkbook, sheetIndex); if (innerSheet.GetRow(0).PhysicalNumberOfCells > maxColumnLength) { throw new OfficeException($"导入数据初始化过多的无效列: {maxColumnLength}"); } var sheet = workbook.CreateSheet(innerSheet.SheetName, headerRowIndex); HandleHeader(sheet, innerSheet, headerRowIndex); HandleBody <TTemplate>(sheet, innerSheet, dataRowStartIndex, enabledEmptyLine); }
/// <summary> /// 获取工作表 /// </summary> /// <param name="workbook">工作簿</param> /// <param name="sheetIndex">工作表索引</param> private ISheet GetSheet(NPOI.SS.UserModel.IWorkbook workbook, int sheetIndex = 0) => workbook.GetSheetAt(sheetIndex);