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

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


创建 SpreadsheetDocument 对象

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

若要创建类实例,请调用 Create 方法。 提供了多种 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.
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook))

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

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

一个工作簿部件必须至少具有一张工作表。 若要添加工作表,请创建新的 Sheet。 创建新的 Sheet时,通过传递 和 Name 参数将 IdSheetIdWorkbook 关联SheetGetIdOfPart使用 方法获取 IdSheet。 然后,通过调用 Append 类的 Sheets 方法将新工作表添加到Sheet集合。

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

// 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 编写的完整示例代码。

static void CreateSpreadsheetWorkbook(string filepath)
{
    // Create a spreadsheet document by supplying the filepath.
    // By default, AutoSave = true, Editable = true, and Type = xlsx.
    using (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);
    }
}

另请参阅