Criar um documento de planilha fornecendo um nome de arquivo
Este tópico mostra como usar as classes no SDK Open XML para Office para criar programaticamente um documento de planilha.
Criando um objeto SpreadsheetDocument
No SDK do Open XML, a classe SpreadsheetDocument representa um pacote de documentos do Excel. Para criar um documento do Excel, crie uma instância da classe SpreadsheetDocument e popule-a com partes. No mínimo, o documento deve ter uma parte de pasta de trabalho que funcione como um contêiner para o documento e pelo menos uma parte de planilha. O texto é representado no pacote como XML usando a marcação SpreadsheetML.
Para criar a instância da classe, chame o método Create(Package, SpreadsheetDocumentType) . Vários métodos Create são fornecidos, cada um deles com uma assinatura diferente. O código de exemplo deste tópico usa o método Create com uma assinatura que requer dois parâmetros. O primeiro parâmetro, package, usa uma cadeia de caracteres de caminho completo que representa o documento que você deseja criar. O segundo parâmetro, tipo, é um membro da enumeração SpreadsheetDocumentType . Esse parâmetro representa o tipo de documento. Por exemplo, há diferentes membros da enumeração SpreadsheetDocumentType para suplementos, modelos, pastas de trabalho e pastas de trabalho e modelos habilitados para macro.
Observação
[!OBSERVAçãO] Selecione o SpreadsheetDocumentType apropriado e verifique se o arquivo persistente tem a extensão de nome de arquivo correta correspondente. Se o SpreadsheetDocumentType não corresponder à extensão de nome de arquivo, ocorrerá um erro quando você abrir o arquivo no Excel.
O exemplo de código a seguir chama o método 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);
Quando tiver criado o pacote de documentos do Excel, você poderá adicionar partes a ele. Para adicionar a parte de pasta de trabalho, chame o método AddWorkbookPart() da classe SpreadsheetDocument.
// Add a WorkbookPart to the document.
WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
Uma parte da pasta de trabalho deve ter pelo menos uma planilha. Para adicionar uma planilha, crie uma nova Folha. Ao criar uma nova Folha, associe a Folha à Pasta de trabalho passando os parâmetros Id, SheetId e Name. Use o método GetIdOfPart(OpenXmlPart) para acessar o Id da Folha. Depois, adicione a nova planilha à coleção Folha chamando o método Append([]) da classe Folhas.
Para criar a estrutura básica do documento usando o SDK Open XML, instancie a classe Workbook, atribua-a à propriedade WorkbookPart da parte do documento main e adicione instâncias da WorksheetPart, Planilha e Planilha. O código de exemplo a seguir cria uma nova planilha, associa-a e acrescenta-a à pasta de trabalho.
// 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ódigo de exemplo
A seguir está o código de exemplo completo em C# e em 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();
}