quarta-feira, 25 de janeiro de 2012

Antes de tudo, vamos adicionar a referência: “Microsoft.Office.Interop.Excel;” para que possamos importar e acessar os arquivos .xls.
Você pode adicionar a referência acessando o menu “Project>Add Reference…”


Agora, declare ‘Excel’ como tipo da mesma referência.

using Excel = Microsoft.Office.Interop.Excel;

Agora, crie uma conexão de dados e adicione um DataGridView ao formulário da seguinte maneira: (Não modifiquei o nome dos controles).



No botão para salvar o arquivo em xls, vamos adicionar o seguinte código:

private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog salvar = new SaveFileDialog() // novo 

SaveFileDialog

Excel.Application App; // Aplicação Excel
Excel.Workbook WorkBook; // Pasta
Excel.Worksheet WorkSheet; // Planilha
object misValue = System.Reflection.Missing.Value;

App = new Excel.Application();
WorkBook = App.Workbooks.Add(misValue);
WorkSheet = (Excel.Worksheet)WorkBook.Worksheets.get_Item(1);
int i = 0;
int j = 0;

// passa as celulas do DataGridView para a Pasta do Excel
for (i = 0; i <= dataGridView1.RowCount - 1; i++)
{
for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
DataGridViewCell cell = dataGridView1[j, i];
WorkSheet.Cells[i + 1, j + 1] = cell.Value;
}
}

// define algumas propriedades da caixa salvar
salvar.Title = "Exportar para Excel";
salvar.Filter = "Arquivo do Excel *.xls | *.xls";
salvar.ShowDialog(); // mostra

// salva o arquivo
WorkBook.SaveAs(salvar.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, 

Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
WorkBook.Close(true, misValue, misValue);
App.Quit(); // encerra o excel

MessageBox.Show("Exportado com sucesso!");
}

Basta testar o código e ver o resultado:



Abraço e até a próxima.

8 comentários:

  1. Anônimo25.1.12

    ótimo tutorial cara, continua com eles. abraço

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Como adicionar o cabeçalho do grid no excel

    ResponderExcluir
  4. Muito bom, mas alguém conseguiu exportar também o cabeçalho? Podem me ajudar???

    ResponderExcluir
  5. Anônimo5.12.13

    basta fazer:

    // passa as celulas do DataGridView para a Pasta do Excel
    for (j = 0; j < dataGridView1.ColumnCount; j++)
    {
    WorkSheet.Cells[ 1, j + 1] = dataGridView1.Columns[j].HeaderText;
    }
    for (i = 1; i <= dataGridView1.RowCount; i++)
    {
    for (j = 0; j < dataGridView1.ColumnCount; j++)
    {
    DataGridViewCell cell = dataGridView1[j, i - 1];
    WorkSheet.Cells[i + 1, j + 1] = cell.Value;
    }
    }

    ResponderExcluir
  6. Alguém sabe como exportar mais de um dataGridView para uma mesma planilha no excel?Preciso exportar tres datagridview para o excel,com espaço entre elas.

    ResponderExcluir