Erstellen eines Spreadsheet-Dokuments durch Angeben eines Dateinamens
In diesem Thema wird gezeigt, wie Sie die Klassen im Open XML SDK für Office zum programmgesteuerten Erstellen eines Tabellenkalkulationsdokuments verwenden.
Erstellen eines SpreadsheetDocument-Objekts
Im Open XML SDK stellt die SpreadsheetDocument -Klasse ein Excel-Dokumentpaket dar. Zum Erstellen eines Excel-Dokuments müssen Sie eine Instanz der SpreadsheetDocument-Klasse erstellen und mit Inhalt anreichern. Das Dokument muss mindestens aus einer Arbeitsmappe als Container für das Dokument und einem Arbeitsblatt bestehen. Der Text wird im Paket mithilfe des SpreadsheetML-Markups als XML dargestellt.
Zum Erstellen der Klasseninstanz rufen Sie einer der Create(Package, SpreadsheetDocumentType) -Methoden auf. Es werden mehrere Create-Methoden mit einer jeweils anderen Signatur bereitgestellt. Der Beispielcode in diesem Thema arbeitet mit der Create-Methode mit einer Signatur, die zwei Parameter erfordert. Der erste Parameter ( package) arbeitet mit einer vollständigen Pfadzeichenfolge, die das Dokument darstellt, das Sie erstellen möchten. Der zweite Parameter, type, ist ein Element der SpreadsheetDocumentType-Enumeration . Dieser Parameter steht für den Dokumenttyp. Zum Beispiel gibt es für Add-Ins, Vorlagen, Arbeitsmappen sowie Arbeitsmappen und Vorlagen mit Makros unterschiedliche Mitglieder in der SpreadsheetDocumentType-Enumeration.
Hinweis
[!HINWEIS] Wählen Sie den gewünschten SpreadsheetDocumentType und stellen Sie sicher, dass die persistente Datei die entsprechende Dateierweiterung aufweist. Entspricht der SpreadsheetDocumentType nicht der Dateierweiterung, wird ein Fehler ausgegeben, sobald Sie die Datei in Excel öffnen.
Im folgenden Codebeispiel wird die Create-Methode aufgerufen.
// Create a spreadsheet document by supplying the filepath.
// By default, AutoSave = true, Editable = true, and Type = xlsx.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);
Sobald Sie das Excel-Dokumentpaket erstellt haben, können Sie Bausteine hinzufügen. Zum Hinzufügen einer Arbeitsmappe rufen Sie die AddWorkbookPart() -Methode der SpreadsheetDocument-Klasse auf.
// Add a WorkbookPart to the document.
WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
Eine Arbeitsmappe muss mindestens ein Arbeitsblatt enthalten. Um ein Arbeitsblatt hinzuzufügen, erstellen Sie ein neues Blatt. Beim Erstellen einer neuen Blatts ordnen Sie das Blatt der Arbeitsmappe zu, indem Sie die Id, SheetId und Name-Parameter übergeben. Verwenden Sie die GetIdOfPart(OpenXmlPart)-Methode, um dieId des Blatts abzurufen. Fügen Sie dann das neue Blatt zur Sheet-Auflistung hinzu, indem Sie die Append([])-Methode der Sheets-Klasse aufrufen.
Um die grundlegende Dokumentstruktur mit dem Open XML SDK zu erstellen, instanziieren Sie die Workbook-Klasse, weisen Sie sie der WorkbookPart-Eigenschaft des Standard Dokumentteils zu, und fügen Sie dann Instanzen von WorksheetPart, Worksheet und Sheet hinzu. Im folgenden Codebeispiel wird ein neues Arbeitsblatt erstellt, verknüpft und an die Arbeitsmappe angehangen.
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets to the Workbook.
Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
// Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
sheets.Append(sheet);
Beispielcode
Nachstehend ist der vollständige Beispielcode in C# und Visual Basic aufgeführt.
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
static void CreateSpreadsheetWorkbook(string filepath)
{
// Create a spreadsheet document by supplying the filepath.
// By default, AutoSave = true, Editable = true, and Type = xlsx.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);
// Add a WorkbookPart to the document.
WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets to the Workbook.
Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
// Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
sheets.Append(sheet);
workbookPart.Workbook.Save();
// Dispose the document.
spreadsheetDocument.Dispose();
}