public void SaveSpreadsheet(Stream outputStream, Stream backgroundImage, ushort backgroundImageWidth, ushort backgroundImageHeight) { CompleteCurrentWorksheet(); m_worksheet = null; m_worksheetOut = null; Stream stream = m_createTempStream("Workbook"); BinaryWriter binaryWriter = new BinaryWriter(stream, Encoding.Unicode); List <long> list = WriteGlobalStream(binaryWriter); bool isFirstPage = true; for (int i = 0; i < m_worksheets.Count; i++) { WorksheetInfo worksheetInfo = m_worksheets[i]; worksheetInfo.ResolveCellReferences(m_bookmarks); worksheetInfo.Write(binaryWriter, isFirstPage, m_createTempStream, backgroundImage, backgroundImageWidth, backgroundImageHeight); isFirstPage = false; } for (int j = 0; j < list.Count; j++) { stream.Seek(list[j] + 4, SeekOrigin.Begin); binaryWriter.Write((uint)m_worksheets[j].BOFStartOffset); } m_worksheets = null; stream.Flush(); stream.Seek(0L, SeekOrigin.Begin); StructuredStorage.CreateSingleStreamFile(stream, "Workbook", "00020820-0000-0000-c000-000000000046", outputStream, forceInMemory: false); stream.Close(); stream = null; outputStream.Flush(); }
private void AdjustWorksheetName(string reportName, WorksheetInfo workSheet) { if (!string.IsNullOrEmpty(reportName)) { if (reportName.Length <= 31) { workSheet.SheetName = reportName; } else { workSheet.SheetName = reportName.Substring(0, 31); } } }
private void AddNewWorksheet() { m_worksheet = new WorksheetInfo(m_createTempStream("Page" + m_worksheets.Count + 1), ExcelRenderRes.SheetName + (m_worksheets.Count + 1)); m_worksheet.SheetIndex = m_worksheets.Count; m_worksheets.Add(m_worksheet); m_worksheetOut = new BinaryWriter(m_worksheet.CellData, Encoding.Unicode); m_numRowsThisBlock = 0; m_rowHandler = null; m_column = -1; m_cellValue = null; m_cellValueType = TypeCode.String; m_checkForRotatedEastAsianChars = false; m_startOfBlock = -1L; m_rowIndexStartOfBlock = 0; m_startOfFirstCellData = 0L; m_lastDataCheckPoint = -1L; m_styleContainer.Reset(); }