
Salvar arquivos Excel em C# é uma tarefa comum em muitas aplicações .NET, especialmente ao gerar relatórios, exportar dados analíticos ou automatizar logs do sistema. Esteja você trabalhando com resumos financeiros ou dados de operações diárias, ser capaz de criar e salvar arquivos Excel programaticamente pode mejorar significativamente a eficiência e a precisão.
Em C#, os desenvolvedores podem manipular arquivos Excel de várias maneiras — criando novas pastas de trabalho, escrevendo dados e salvando-os em vários formatos, como XLSX, CSV ou PDF. Com a ajuda de bibliotecas dedicadas ao Excel, essas operações podem ser automatizadas eficientemente sem depender do Microsoft Excel ou de intervenção manual.
Neste artigo, exploraremos como:
- Preparar seu ambiente de desenvolvimento
- Salvar dados de DataTable ou DataGridView no Excel
- Salvar arquivos Excel em diferentes formatos de planilha (CSV, XLS, etc.)
- Exportar arquivos Excel para formatos de documento (PDF, HTML, etc.)
- Salvar pastas de trabalho do Excel em um MemoryStream para aplicativos da web
- Abrir e salvar novamente arquivos Excel existentes
Prepare o Ambiente de Desenvolvimento
Antes de mergulhar no código, configure seu ambiente de desenvolvimento com uma biblioteca Excel que suporte a criação, leitura e salvamento de arquivos em .NET. Neste tutorial, usaremos o Free Spire.XLS for .NET.
Passo 1: Instale o Spire.XLS via NuGet
Install-Package FreeSpire.XLS
Passo 2: Importe o Namespace Necessário
using Spire.Xls;
Passo 3: Crie, Escreva e Salve um Arquivo Excel Simples
// Crie uma nova pasta de trabalho e obtenha a primeira planilha
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// Escreva "Olá Mundo!" na célula A1
sheet.Range["A1"].Text = "Olá Mundo!";
// Salve a pasta de trabalho em um arquivo
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016);
Este exemplo simples mostra o fluxo de trabalho básico: criar uma pasta de trabalho, escrever dados em uma célula e salvar o arquivo.
Depois disso, você pode explorar classes e métodos chave como:
- Workbook – representa o arquivo Excel inteiro.
- Worksheet – representa uma única planilha dentro da pasta de trabalho.
- Range – permite acesso a células específicas para entrada, formatação ou estilização.
- Workbook.SaveToFile() – salva a pasta de trabalho no disco no formato Excel especificado.
Salvar Dados em um Arquivo Excel em C#
Salvar dados estruturados como DataTable ou DataGridView em um arquivo Excel é uma das tarefas mais práticas no desenvolvimento em C#. Se sua aplicação produz resultados de banco de dados, conteúdo de grade de interface do usuário ou relatórios automatizados, exportar esses conjuntos de dados para o Excel oferece melhor legibilidade e compatibilidade.
Exemplo 1: Salvar DataTable no Excel
using Spire.Xls;
using System.Data;
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";
DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");
// Adicionar linhas de exemplo
table.Rows.Add("E001", "Alice Johnson", "Finance", "2020-03-12", "7500");
table.Rows.Add("E002", "Bob Williams", "Human Resources", "2019-08-05", "6800");
table.Rows.Add("E003", "Catherine Lee", "IT", "2021-01-20", "8200");
table.Rows.Add("E004", "David Smith", "Marketing", "2018-11-30", "7100");
table.Rows.Add("E005", "Emily Davis", "Sales", "2022-06-15", "6900");
// Inserir o DataTable na planilha
sheet.InsertDataTable(table, true, 1, 1);
// Aplicar formatos incorporados
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading1;
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent1;
}
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();
// Salvar no Excel
workbook.SaveToFile("EmployeeDataExport.xlsx", FileFormat.Version2016);
Como funciona:
- InsertDataTable() insere dados a partir de uma célula específica.
- O argumento true inclui os cabeçalhos das colunas.
- SaveToFile() salva a pasta de trabalho no disco; o segundo parâmetro especifica a versão do formato Excel.
- FileFormat.Version2016 especifica a versão do formato Excel.
Abaixo está um exemplo de saída mostrando como o DataTable exportado aparece no Excel:

Exemplo 2: Salvar DataGridView no Excel
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.InsertDataTable(((DataTable)dataGridView1.DataSource), true, 1, 1);
workbook.SaveToFile("GridViewExport.xlsx", FileFormat.Version2016);
Dica: Antes de salvar, certifique-se de que a fonte de dados do seu DataGridView seja convertida corretamente para um DataTable. Isso garante que a estrutura exportada corresponda ao layout da grade da interface do usuário.
Se você quiser aprender como criar arquivos Excel com mais tipos de dados, formatação e outros elementos, pode explorar o artigo Como Criar Arquivos Excel em C#.
Salvar Arquivo Excel como CSV ou XLS em C#
Diferentes sistemas e plataformas exigem diferentes formatos de planilha. Embora o XLSX seja agora o padrão, CSV, XLS e outros formatos permanecem comuns em ambientes empresariais. Exportar para diferentes formatos permite que os dados do Excel sejam compartilhados, processados ou importados por várias aplicações.
Exemplo 1: Salvar Excel como CSV
CSV (Valores Separados por Vírgula) é um formato simples baseado em texto, ideal para trocar dados com bancos de dados, aplicações web ou outros sistemas que suportam arquivos de texto simples.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
Exemplo 2: Salvar Excel como XLS (Formato Legado)
XLS (formato Excel 97–2003) é um formato binário legado ainda usado em sistemas ou aplicações mais antigas que não suportam XLSX. Salvar em XLS garante compatibilidade com fluxos de trabalho empresariais legados.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report_legacy.xls", ExcelVersion.Version97to2003);
Formatos de Planilha Adicionais Suportados
Além dos formatos CSV, XLS e XLSX comumente usados, a biblioteca também suporta vários outros formatos de planilha e modelo. A tabela abaixo lista esses formatos juntamente com seus valores de enumeração FileFormat correspondentes para fácil referência ao salvar arquivos programaticamente.
| Formato | Descrição | Enum Correspondente (FileFormat) |
|---|---|---|
| ODS | Planilha OpenDocument | FileFormat.ODS |
| XLSM | Pasta de trabalho do Excel habilitada para macro | FileFormat.Xlsm |
| XLSB | Pasta de trabalho binária do Excel | FileFormat.Xlsb2007 / FileFormat.Xlsb2010 |
| XLT | Modelo do Excel 97–2003 | FileFormat.XLT |
| XLTX | Modelo Excel Open XML | FileFormat.XLTX |
| XLTM | Modelo do Excel habilitado para macro | FileFormat.XLTM |
Esses formatos adicionais são úteis para organizações que trabalham com sistemas legados, padrões de documentos abertos ou fluxos de trabalho de automação baseados em macro/modelo.
Salvar Excel como PDF ou HTML em C#
Em muitos casos, os arquivos do Excel precisam ser convertidos em formatos de documento ou web para facilitar a publicação, impressão ou compartilhamento.
Exportar para PDF é ideal para relatórios de layout fixo e impressão, enquanto HTML é adequado para visualizar dados do Excel em um navegador da web.
Exemplo 1: Salvar Excel como PDF
O exemplo a seguir mostra como salvar uma pasta de trabalho do Excel como um arquivo PDF usando C#. Isso é útil para gerar relatórios que preservam o layout e a formatação.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.pdf", FileFormat.PDF);
Aqui está um exemplo do arquivo PDF gerado após a exportação do Excel:

Exemplo 2: Salvar Excel como HTML
Este exemplo demonstra como salvar uma pasta de trabalho do Excel como um arquivo HTML, facilitando a renderização dos dados em um navegador da web ou a integração com aplicações web.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.html", FileFormat.HTML);
Abaixo está uma prévia do arquivo HTML exportado renderizado em um navegador:

Formatos Adicionais de Documento e Web Suportados
Além de PDF e HTML, a biblioteca suporta vários outros formatos amigáveis para documentos e web. A tabela abaixo mostra esses formatos juntamente com seus valores de enumeração FileFormat para fácil referência.
| Formato | Descrição | Enum Correspondente (FileFormat) |
|---|---|---|
| XML | Dados do Excel exportados como XML | FileFormat.XML |
| Bitmap / Imagem | Exportar Excel como Bitmap ou outros formatos de imagem | FileFormat.Bitmap |
| XPS | Documento de Especificação de Papel XML | FileFormat.XPS |
| PostScript | Documento PostScript | FileFormat.PostScript |
| OFD | Formato de Documento de Layout Fixo Aberto | FileFormat.OFD |
| PCL | Arquivo de Linguagem de Comando de Impressora | FileFormat.PCL |
| Markdown | Formato de arquivo Markdown | FileFormat.Markdown |
Esses formatos fornecem flexibilidade adicional para distribuir conteúdo do Excel em diferentes plataformas e fluxos de trabalho, seja para impressão, publicação na web ou automação.
Salvar um Arquivo Excel em MemoryStream em C#
Em aplicações web ou serviços em nuvem, salvar arquivos Excel diretamente no disco pode não ser ideal por razões de segurança ou desempenho. Usar MemoryStream permite gerar arquivos Excel na memória e entregá-los diretamente aos clientes para download. O Spire.XLS for .NET também suporta tanto o carregamento quanto o salvamento de pastas de trabalho através do MemoryStream, facilitando o manuseio de arquivos Excel inteiramente na memória.
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Export to Stream";
using (MemoryStream stream = new MemoryStream())
{
workbook.SaveToStream(stream, ExcelVersion.Version2016);
byte[] bytes = stream.ToArray();
// Exemplo: enviar bytes para o cliente para download no ASP.NET
// Response.BinaryWrite(bytes);
}
Esta abordagem é particularly útil para ASP.NET, Web API ou serviços em nuvem, onde você deseja servir arquivos Excel dinamicamente sem criar arquivos temporários no servidor.
Abrir e Salvar Novamente Arquivos Excel em C#
Em muitas aplicações, pode ser necessário carregar uma pasta de trabalho do Excel existente, aplicar atualizações ou modificações e, em seguida, salvá-la de volta no disco ou convertê-la para um formato diferente. Isso é comum ao atualizar relatórios, modificar dados exportados ou automatizar fluxos de trabalho de arquivos Excel.
Exemplo: Abrir e Atualizar um Arquivo Excel
O código C# a seguir carrega a pasta de trabalho anterior, atualiza a primeira célula e salva as alterações:
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Updated Content"; // Atualizar o valor da célula
sheet.Range["A1"].AutoFitColumns(); // Ajustar automaticamente a largura da coluna
// Salvar a pasta de trabalho atualizada
workbook.Save(); // Salva no arquivo original
workbook.SaveToFile("UpdatedCopy.xlsx", ExcelVersion.Version2016); // Salvar como novo arquivo
A captura de tela abaixo mostra a planilha do Excel atualizada após modificar e salvar o arquivo:

Você também pode conferir o guia detalhado sobre edição de arquivos Excel usando C# para cenários mais avançados.
Melhores Práticas ao Salvar Arquivos Excel
-
Evite Sobrescrever Arquivos
Verifique se o arquivo de destino existe antes de salvar para evitar a perda acidental de dados.
-
Gerencie Permissões e Caminhos Adequadamente
Garanta que sua aplicação tenha permissão de escrita na pasta de destino, especialmente em ambientes web ou na nuvem.
-
Escolha o Formato Correto
Use XLSX para compatibilidade moderna, CSV para troca de dados e PDF para imprimir ou compartilhar relatórios.
Conclusão
Salvar arquivos Excel em C# abrange uma ampla gama de operações — desde a escrita de conjuntos de dados estruturados, exportação para diferentes formatos de planilha, conversão para PDF/HTML, até o manuseio de fluxos de arquivos em aplicações web.
Com a flexibilidade oferecida por bibliotecas como o Spire.XLS for .NET, os desenvolvedores podem implementar poderosos fluxos de trabalho de automação do Excel com facilidade.
Perguntas Frequentes
P1: Como salvo um arquivo Excel em C#?
Use SaveToFile() com o ExcelVersion ou FileFormat apropriado:
workbook.SaveToFile("Report.xlsx", ExcelVersion.Version2016);
P2: Como abro e modifico um arquivo Excel existente?
Carregue a pasta de trabalho usando LoadFromFile(), faça as alterações e salve:
Workbook workbook = new Workbook();
workbook.LoadFromFile("ExistingFile.xlsx");
workbook.Worksheets[0].Range["A1"].Text = "Updated Content";
workbook.SaveToFile("UpdatedFile.xlsx", ExcelVersion.Version2016);
P3: Como salvo como CSV ou PDF?
Especifique o FileFormat desejado em SaveToFile():
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
workbook.SaveToFile("Report.pdf", FileFormat.PDF);
P4: Posso salvar o Excel na memória em vez do disco?
Sim. Use SaveToStream() para enviar a saída para um MemoryStream, útil em aplicações web ou na nuvem:
using (MemoryStream stream = new MemoryStream())
{
workbook.SaveToStream(stream, ExcelVersion.Version2016);
byte[] bytes = stream.ToArray();
}