private Document ReadData(ISheet sheet, SalaryHeader header, int rowIndex) { var row = sheet.GetRow(rowIndex); if (row == null) { return(null); } if (row.Cells.All(e => e.CellType == CellType.Blank)) { return(null); } if (row.Cells.Any(e => e.IsMergedCell)) { return(null); } var values = sheet.ReadRowData(rowIndex); if (values == null) { return(null); } Document data = new Document(); foreach (var col in header.Columns) { if (col.ColumnSpan > 1) { continue; } var cell = values.FirstOrDefault(e => e.Column == col.Column); if (cell == null) { continue; } if (col.Name == "序号" && (cell.Value == null || cell.Value.ToString() == "合计")) { return(null); } data[col.Name] = cell.Value; } return(data); }
private SalaryHeader BuildHeader(ISheet sheet, int rowIndex) { var result = new SalaryHeader { StartRow = rowIndex }; var row = sheet.GetRow(rowIndex); if (row == null) { return(null); } if (row.Cells.All(e => e.CellType == CellType.Blank) || row.Cells.All(e => e.CellType != CellType.String)) { return(null); } var columns = sheet.ReadRowData(rowIndex).AsEnumerable(); var firstColumn = columns.FirstOrDefault(e => e.Rowspan > 1); if (firstColumn != null) { for (var i = 1; i < firstColumn.Rowspan; i++) { columns = columns.Concat(sheet.ReadRowData(rowIndex + i)); } } result.Columns = columns.Where(e => e.Colspan == 1 && e.Value != null).Select(e => new SalaryColumn { Column = e.Column, Row = e.Row, ColumnSpan = e.Colspan, RowSpan = e.Rowspan, Name = e.Value.ToString() }).ToList(); return(result); }