通过提供文件名创建电子表格文档

本主题演示如何使用 Open XML SDK for Office 中的类以编程方式创建电子表格文档。


创建 SpreadsheetDocument 对象

在 Open XML SDK 中, SpreadsheetDocument 类表示 Excel 文档包。 若要创建 Excel 文档,请创建 SpreadsheetDocument 类的一个实例并用部件填充该实例。 该文档至少必须具有一个充当文档容器的工作簿部件和至少一个工作表部件。 在此包中,将使用 SpreadsheetML 标记将文本表示为 XML 形式。

若要创建类实例,请调用 Create (Package, SpreadsheetDocumentType) 方法。 提供了多个 Create 方法,每个方法都有不同的签名。 本主题中的示例代码使用 Create 方法,此方法包含需要两个参数的签名。 第一个参数 package 采用表示要创建的文档的完整路径字符串。 第二个参数 类型SpreadsheetDocumentType 枚举的成员。 此参数表示文档类型。 例如,对于加载项、模板、工作簿和启用了宏的模板和工作簿, SpreadsheetDocumentType 枚举有不同的成员。

注意

[!注释] 选择适当的 SpreadsheetDocumentType 并确保保留文件具有正确且匹配的文件扩展名。 如果 SpreadsheetDocumentType 与该文件扩展名不匹配,则在 Excel 中打开该文件时将发生错误。

以下代码示例调用 Create 方法。

// Create a spreadsheet document by supplying the filepath.
// By default, AutoSave = true, Editable = true, and Type = xlsx.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

在创建了 Excel 文档包后,您即可向其中添加部件。 若要添加工作簿部件,需调用 SpreadsheetDocument 类的AddWorkbookPart() 方法。

// Add a WorkbookPart to the document.
WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
workbookPart.Workbook = new Workbook();

一个工作簿部件必须至少具有一张工作表。 若要添加工作表,请创建新的 Sheet。 创建新工作表时,通过传递 IdSheetIdName 参数将工作表工作簿相关联。 使用 GetIdOfPart (OpenXmlPart) 方法获取工作表ID。 然后,通过调用 Sheet 类的 Append ([]) 方法,将新工作表添加到 Sheet 集合。

若要使用 Open XML SDK 创建基本文档结构,请实例化 Workbook 类,将其分配给 main 文档部件的 WorkbookPart 属性,然后添加 WorksheetPartWorksheetSheet 的实例。 以下代码示例将创建一张新的工作表,并关联该工作表,然后将该工作表附加到工作簿。

// 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);

示例代码

以下是使用 C# 和 Visual Basic 编写的完整示例代码。

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();
}

另请参阅