Arquivo

Posts Tagged ‘Exportar’

Exportar para Excel: Desktop

Olá.

Uma das muitas dúvidas que vejo em fórum de discussão é como exportar para o Microsoft Excel os dados de um Grid. Seja uma aplicação Web ou Desktop. Nesse artigo pretendo mostrar isso, por hora vamos aprender a importar através de uma aplicação Desktop.

Para esse exemplo crie uma aplicação Windows Application e crie uma conexão com uma base de dados acessando uma tabela simples. Ao form adicione um DataGridView e um Button conforme exemplo a seguir:

Para realizar esse exemplo, precisamos adicionar uma referencia do Microsoft Excel ao nosso projeto, para isso acesse Project >> Add Reference e na guia “COM” selecione Microsoft Excel 14.0 Object Library

No evento OnClick do botão adicione o seguinte código:

            string fileName = "";

            // Criando componente para salvar o arquivo no computador
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.CheckPathExists = true;
            saveFileDialog.AddExtension = true;
            saveFileDialog.ValidateNames = true;
            saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            saveFileDialog.DefaultExt = ".xls";
            saveFileDialog.Filter = "Microsoft Excel Workbook (*.xls)|*.xls";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                fileName = saveFileDialog.FileName;

                var excelApp = new Excel.Application();

                // Deixa o objeto visivel
                excelApp.Visible = true;

                // Criando uma planilha no excel
                excelApp.Workbooks.Add();

                int ContadorLinha = dgvPessoa.Rows.Count;
                int ContadorColuna = dgvPessoa.Columns.Count;

                // Criando cabeçalho
                for (int i = 1; i < ContadorColuna + 1; i++)
                {
                    excelApp.Cells[1, i] = dgvPessoa.Columns[i - 1].HeaderText;
                }

                // Criando rodapé
                for (int i = 0; i < ContadorLinha; i++)
                {
                    for (int j = 0; j < ContadorColuna; j++)
                    {
                        if (dgvPessoa.Rows[i].Cells[j].Value == null)
                            continue;

                        excelApp.Cells[i + 2, j + 1] = dgvPessoa.Rows[i].Cells[j].Value.ToString();
                    }
                }

                // Salvando as informações no Excel
                excelApp.ActiveWorkbook.SaveCopyAs(fileName);
                excelApp.ActiveWorkbook.Saved = true;
                excelApp.Quit();

                MessageBox.Show("Arquivo salvo com sucesso.");

Bem simples, o próprio código é explicativo. Caso você queria aprender mais sobre o tema acesse aqui.

Até o próximo.

Anúncios
Categorias:ASP.Net e C# Tags:,