示例#1
0
        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);
        }
示例#2
0
        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);
        }