I got error opening the Excel file after adding the second worksheet with the following code. The error message was "We found a problem with some content in 'Test.xlsx.' Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes." I clicked "Yes". Next message was "The workbook cannot be opened or repaired by Microsoft Excel because it is corrupt."
var worksheetPart2 = workbookPart.AddNewPart<WorksheetPart>(); var relationshipId2 = workbookPart.GetIdOfPart(worksheetPart2); var sheetSuspense = new Sheet { Name = "Suspense Upload", SheetId = 2, Id = relationshipId2 }; var suspenseSheets = new Sheets(); suspenseSheets.Append(sheetSuspense); workbook.Append(suspenseSheets);
using (SpreadsheetDocument document = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookPart; OpenXmlWriter writer; workbookPart = document.AddWorkbookPart(); WorkbookStylesPart wbsp = workbookPart.AddNewPart<WorkbookStylesPart>(); var excelStyleSheet = new ExcelStylesheet(); // Cell formats excelStyleSheet.AddCellFormat("DateTime", (f) => { f.NumberFormatId = 14; //general f.ApplyNumberFormat = BooleanValue.FromBoolean(true); }); excelStyleSheet.AddCellFormat("Numeric", (f) => { f.NumberFormatId = 2; // 0.00 f.ApplyNumberFormat = BooleanValue.FromBoolean(true); }); SharedStringTablePart stringTable = workbookPart.AddNewPart<SharedStringTablePart>(); string XML = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?><sst xmlns=""http://schemas.openxmlformats.org/spreadsheetml/2006/main""></sst>"; AddPartXml(stringTable, XML); var workbook = new Workbook(); workbookPart.Workbook = workbook; var fileVersion = new FileVersion() { ApplicationName = "Microsoft Office Excel" }; workbook.Append(fileVersion); var worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); var relationshipId = workbookPart.GetIdOfPart(worksheetPart); var sheetPayment = new Sheet { Name = "Payment Upload", SheetId = 1, Id = relationshipId }; var paymentSheets = new Sheets(); paymentSheets.Append(sheetPayment); workbook.Append(paymentSheets); writer = OpenXmlWriter.Create(worksheetPart); writer.WriteStartElement(new Worksheet()); writer.WriteStartElement(new SheetData()); writer.WriteEndElement(); // SheetData var worksheetPart2 = workbookPart.AddNewPart<WorksheetPart>(); var relationshipId2 = workbookPart.GetIdOfPart(worksheetPart2); var sheetSuspense = new Sheet { Name = "Suspense Upload", SheetId = 2, Id = relationshipId2 }; var suspenseSheets = new Sheets(); suspenseSheets.Append(sheetSuspense); workbook.Append(suspenseSheets); writer = OpenXmlWriter.Create(worksheetPart); writer.WriteStartElement(new Worksheet()); writer.WriteStartElement(new SheetData()); writer.WriteEndElement(); // SheetData writer.WriteEndElement(); // Worksheet writer.Close(); wbsp.Stylesheet = excelStyleSheet.Stylesheet; wbsp.Stylesheet.Save(); document.WorkbookPart.Workbook.Save(); document.Close(); }