private void ReadGlobals() { _workbook = new XlsxWorkbook( _zipWorker.GetWorkbookStream(), _zipWorker.GetWorkbookRelsStream(), _zipWorker.GetSharedStringsStream(), _zipWorker.GetStylesStream()); CheckDateTimeNumFmts(_workbook.Styles.NumFmts); }
private void Dispose(bool disposing) { // Check to see if Dispose has already been called. if (!this.disposed) { if (disposing) { if (_xmlReader != null) ((IDisposable) _xmlReader).Dispose(); if (_sheetStream != null) _sheetStream.Dispose(); if (_zipWorker != null) _zipWorker.Dispose(); } _zipWorker = null; _xmlReader = null; _sheetStream = null; _workbook = null; _cellsValues = null; _savedCellsValues = null; disposed = true; } }
public XlsxWorksheet(ZipWorker document, XlsxWorkbook workbook, SheetRecord refSheet) { Document = document; Workbook = workbook; Name = refSheet.Name; Id = refSheet.Id; Rid = refSheet.Rid; VisibleState = refSheet.VisibleState; Path = refSheet.Path; DefaultRowHeight = 15; if (string.IsNullOrEmpty(Path)) { return; } using var sheetStream = Document.GetWorksheetReader(Path); if (sheetStream == null) { return; } int rowIndexMaximum = int.MinValue; int columnIndexMaximum = int.MinValue; List <Column> columnWidths = new List <Column>(); List <CellRange> cellRanges = new List <CellRange>(); bool inSheetData = false; Record record; 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; } } ColumnWidths = columnWidths.ToArray(); MergeCells = cellRanges.ToArray(); if (rowIndexMaximum != int.MinValue && columnIndexMaximum != int.MinValue) { FieldCount = columnIndexMaximum + 1; RowCount = rowIndexMaximum + 1; } }