internal void ParseWorkSheet() { var headerTableFound = false; var usedRange = WorkSheet.GetUsedRange(); ColumnsCount = usedRange.RightColumnIndex - usedRange.LeftColumnIndex; for (var rowIndex = usedRange.TopRowIndex; rowIndex < usedRange.BottomRowIndex; rowIndex++) { AddNewRow(); for (var columnIndex = usedRange.LeftColumnIndex; columnIndex <= usedRange.RightColumnIndex; columnIndex++) { CurrentRowInfo.AddCell(WorkSheet.Cells[rowIndex, columnIndex]); } if (headerTableFound || !GetStatisticForRow()) { continue; } headerTableFound = true; for (var headerColumnIndex = usedRange.LeftColumnIndex; headerColumnIndex <= usedRange.RightColumnIndex; headerColumnIndex++) { if (WorkSheet.Cells[rowIndex, headerColumnIndex].Value.Type != CellValueType.Text) { continue; } var cellValue = WorkSheet.Cells[rowIndex, headerColumnIndex].Value.ToString().ToLower(); var columnRange = new Thickness { Left = headerColumnIndex, Top = usedRange.TopRowIndex, Right = headerColumnIndex, Bottom = usedRange.BottomRowIndex }; var pattern = new Regex("[:_,.\\*/\n]|[ ]{2,}"); cellValue = pattern.Replace(cellValue, " "); var columnHeaderValue = new ColumnHeaderValue { HeaderTableRowIndex = rowIndex, Caption = cellValue, RangeInWorksheet = columnRange }; if (ColumnHeaderList.Exists(c => c.Caption == columnHeaderValue.Caption)) { continue; } CompareWithGoodColumns(columnHeaderValue); ColumnHeaderList.Add(columnHeaderValue); } } }