IRONSOFTWAREHOME
USANDO O IRONXL

Baixe arquivos do Excel em .NET C#: Exporte dados para XLSX, CSV e muito mais.

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

Implementar funcionalidade de exportação de planilhas é um requisito comum para aplicativos web corporativos, no entanto, o processo manual de gerar e entregar esses arquivos frequentemente introduz complexidade técnica significativa. Os desenvolvedores precisam frequentemente navegar pelas nuances de gerenciamento de MemoryStream e configurar cabeçalhos de content-disposition HTTP precisos para garantir um comportamento consistente do navegador e evitar a corrupção de dados.

Este artigo abrange tudo o que é necessário para criar e baixar arquivos Excel em controladores ASP .NET C# MVC usando a biblioteca IronXL. Vamos abordar a exportação de dados para arquivos Excel reais no formato XLSX, o streaming de arquivos CSV, a conversão de uploads para reexportação e o retorno de downloads de arquivos para o navegador, tudo sem instalar o Microsoft Office ou depender do Excel Interop. Instale o pacote IronXL NuGet e inicie uma avaliação gratuita para acompanhar os exemplos de código-fonte.

NuGetInstalar com NuGet

PM > Install-Package IronXL.Excel

Install IronXL by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

Como Criar e Baixar um Arquivo Excel de um Controlador?

O padrão central para qualquer cenário de download de arquivo Excel em ASP.NET Core envolve três etapas: criar a planilha, escrever em um fluxo e retornar o fluxo como resposta de arquivo. O código a seguir mostra uma ação de controlador MVC completa que constrói um arquivoXLSXdo zero e o envia para o navegador.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
    // Export employee data as a downloadable Excel file
    public IActionResult DownloadExcel()
    {
        // Create a new workbook and worksheet
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Add header row with column names
        worksheet["A1"].Value = "Name";
        worksheet["B1"].Value = "Department";
        worksheet["C1"].Value = "Salary";
        // Populate cells with data values
        worksheet["A2"].Value = "Alice Torres";
        worksheet["B2"].Value = "Engineering";
        worksheet["C2"].Value = 95000;
        worksheet["A3"].Value = "James Park";
        worksheet["B3"].Value = "Marketing";
        worksheet["C3"].Value = 78000;
        // Export workbook to a MemoryStream for download
        var stream = workbook.ToStream();
        string filename = "Employees.xlsx";
        var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        // Return file to the browser with content disposition attachment
        return File(stream, content, filename);
    }
}

Arquivo Excel de Saída

Baixar arquivo Excel em ASP .NET C#: Exportar dados para XLSX,CSVe mais: Imagem 1 - exemplo de saída para download de arquivo Excel em ASP .NET C#

O método WorkBook.Create gera um novo documento Excel, e o CreateWorkSheet adiciona a primeira planilha a ele. Após preencher as células com valores, o método ToStream converte toda a planilha em um MemoryStream, sem que arquivos temporários toquem no disco. O método de retorno File() no controlador define o cabeçalho de content disposition para attachment, que instrui o navegador a baixar o arquivo em vez de tentar renderizá-lo. O terceiro parâmetro controla como o nome do arquivo aparece na janela de download do usuário.

Este padrão public IActionResult funciona em projetos .NET Framework e ASP.NET Core, sendo a abordagem ideal para aplicativos web que precisam exportar dados para Excel.

Como Exportar Dados do Banco de Dados para uma Planilha Baixável?

A maioria dos cenários do mundo real envolve exportar dados de uma tabela de banco de dados em vez de valores codificados. O padrão permanece o mesmo, consultar os dados, preencher as planilhas e retornar o arquivo. Aqui está um exemplo que simula a obtenção de registros de um banco de dados e escrevê-los em um documento Excel.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class DataExportController : Controller
{
    // Export database records to an xlsx file for download
    public IActionResult ExportDatabaseReport()
    {
        // Simulate a database query returning order records
        var orders = new[]
        {
            new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m },
            new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m },
            new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m },
        };
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Orders");
        // Write headers
        worksheet["A1"].Value = "Order ID";
        worksheet["B1"].Value = "Customer";
        worksheet["C1"].Value = "Total";
        // Write each row of data from the query results
        for (int i = 0; i < orders.Length; i++)
        {
            int row = i + 2;
            worksheet[$"A{row}"].Value = orders[i].OrderId;
            worksheet[$"B{row}"].Value = orders[i].Customer;
            worksheet[$"C{row}"].Value = orders[i].Total;
        }
        var stream = workbook.ToStream();
        string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx";
        return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
    }
}

Saída

Baixar arquivo Excel em ASP .NET C#: Exportar dados para XLSX,CSVe mais: Imagem 2 - Saída para exportação de dados de um banco de dados para um arquivo Excel

Na produção, o array de pedidos viria de uma consulta Entity Framework Core, uma chamada Dapper, ou qualquer camada de acesso a dados conectada via uma string de conexão ao banco de dados. O loop itera sobre os resultados e escreve cada valor nas células corretas na planilha. Observe como o nome do arquivo de string inclui uma data, um pequeno detalhe que evita dores de cabeça quando os usuários baixam arquivos repetidamente.

O sistema de endereçamento de células do IronXL (planilha[$"A{linha}"]) mantém tudo legível, e a API WorkBook cuida de todo o trabalho pesado de construir um arquivoXLSXválido internamente. Para cenários mais complexos envolvendo fórmulas, estilo ou planilhas múltiplas, a mesma abordagem escala de maneira limpa.

Como Baixar Dados Como ArquivosCSVem vez de XLSX?

Às vezes, um arquivoCSVleve é a melhor escolha, particularmente ao alimentar dados em outros sistemas, bancos de dados ou ferramentas que não precisam do rico conjunto de recursos de um arquivo Excel real. O IronXL torna a troca entre formatos trivial.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class CsvController : Controller
{
    // Export data as aCSVfile download
    public IActionResult ExportCsv()
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Products");
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Price";
        worksheet["A2"].Value = "WDG-001";
        worksheet["B2"].Value = "Widget Pro";
        worksheet["C2"].Value = 29.99;
        // Convert toCSVstream instead of XLSX
        var stream = workbook.ToCsvStream();
        string filename = "Products.csv";
        return File(stream, "text/csv", filename);
    }
}

ArquivoCSVde saída

Baixar arquivo Excel em ASP .NET C#: Exportar dados para XLSX,CSVe mais: Imagem 3 - Dados baixados como um arquivoCSVem vez de Excel

O método ToCsvStream exporta a primeira planilha como um MemoryStream formatado em CSV. Os arquivosCSVfuncionam bem para troca de dados, mas eles eliminam qualquer formatação, fórmulas e estrutura de várias planilhas. Quando você precisa desses recursos, mantenha-se com o formato de arquivoXLSXvia ToStream() ou ToXlsxStream(). Para uma visão mais profunda de conversões de formato, consulte o guia de conversão de planilhas.

Como Re-Exportar um Upload em um Formato Diferente?

Um cenário comum de aplicativos web envolve aceitar arquivos carregados pelos usuários e exportá-los em outro formato, por exemplo, converter um uploadXLSparaXLSXou produzir arquivosCSVa partir de uma planilha originalmente salva em um formato legado.

public IActionResult ConvertUpload(IFormFile upload)
{
    using var memoryStream = new MemoryStream();
    upload.CopyTo(memoryStream);
    memoryStream.Position = 0;
    // Load uploaded Excel file from the stream
    var workbook = WorkBook.Load(memoryStream);
    // Re-export asXLSXregardless of the original file extension or file type
    var stream = workbook.ToXlsxStream();
    string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx";
    return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
}

Saída: ConvertendoCSVpara Formato XLSX

Baixar arquivo Excel em ASP .NET C#: Exportar dados para XLSX,CSVe mais: Imagem 4 - Exemplo de saída para converter nosso arquivoCSVpara o formato XLSX

O método WorkBook.Load aceita um MemoryStream, portanto, não há necessidade de salvar os arquivos enviados no disco primeiro. Ele detecta automaticamente se a origem é um arquivo XLS,XLSXouCSVe faz a interpretação adequadamente. A partir daí,ToXlsxStream()gera um novo MemoryStream limpo no formato moderno XLSX, cada byte devidamente estruturado. Isso é útil para normalizar as submissões dos usuários antes de processamento ou armazenamento adicional.

Quais Formatos de Arquivo Podem Ser Exportados?

O IronXL suporta a exportação de dados para múltiplos formatos de planilhas e de intercâmbio de dados. A tabela abaixo resume as opções de saída disponíveis e seus melhores usos.

FormatoExtensão de ArquivoMétodo de StreamMelhor Caso de Uso
XLSX.xlsxToXlsxStream()Planilhas modernas do Excel com formatação e fórmulas
XLS.xlsToXlsStream()Compatibilidade com sistemas legados
CSV.csvToCsvStream()Importação em banco de dados, pipelines de dados, exportação leve
XML.xmlToXmlStream()Integração de sistema empresarial
JSON.jsonSaveAsJson()Respostas de API Web e troca de dados
HTML.htmlExportToHtml()Exibição de dados de planilhas em páginas da Web

Cada método de stream retorna um MemoryStream que se conecta diretamente ao auxiliar de retorno File() do ASP.NET Core. A alternativa do array de bytes (ToByteArray()) também está disponível para cenários em que um byte[] seja mais conveniente, por exemplo, ao salvar em um banco de dados blob ou anexar a um stream de resposta de email. Todos esses métodos estão disponíveis imediatamente após a instalação do pacote NuGet IronXL. Para um passo a passo completo de cada formato de exportação, consulte a documentação de exportação para Excel.

Se o objetivo é baixar arquivos no formatoXLSXpara analistas de negócios, exportar arquivosCSVpara engenheiros de dados ou gerarXMLpara integração empresarial, o IronXL mantém o código limpo e a saída confiável em aplicações .NET Core e .NET Framework. Pronto para enviar exportações de planilhas no seu próximo projeto? Obtenha uma licença de avaliação gratuita ou explore as opções de licenciamento para começar hoje. Para instruções passo a passo de configuração, consulte o guia de introdução do IronXL.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.