-
Notifications
You must be signed in to change notification settings - Fork 1k
Open
Labels
Milestone
Description
| while ((record = sheetStream.Read()) != null) | |
| { | |
| switch (record) | |
| { | |
| case SheetDataBeginRecord _: | |
| inSheetData = true; | |
| break; | |
| case SheetDataEndRecord _: | |
| inSheetData = false; | |
| break; | |
| case RowHeaderRecord row when inSheetData: | |
| rowIndexMaximum = Math.Max(rowIndexMaximum, row.RowIndex); | |
| break; | |
| case CellRecord cell when inSheetData: | |
| columnIndexMaximum = Math.Max(columnIndexMaximum, cell.ColumnIndex); | |
| break; | |
| case ColumnRecord column: | |
| columnWidths.Add(column.Column); | |
| break; | |
| case SheetFormatPrRecord sheetFormatProperties: | |
| if (sheetFormatProperties.DefaultRowHeight != null) | |
| DefaultRowHeight = sheetFormatProperties.DefaultRowHeight.Value; | |
| break; | |
| case SheetPrRecord sheetProperties: | |
| CodeName = sheetProperties.CodeName; | |
| break; | |
| case MergeCellRecord mergeCell: | |
| cellRanges.Add(mergeCell.Range); | |
| break; | |
| case HeaderFooterRecord headerFooter: | |
| HeaderFooter = headerFooter.HeaderFooter; | |
| break; | |
| } | |
| } |
So basically calling reader.NextResult() is contributing 50% time of my workload and allocating tons of Cell, Cell[] and boxed double for worksheet I even don't want to read.
Maybe make those properties lazy calculated?
victor-gutemberg and GennadyGS
