Usuário com melhor resposta
exportar para excel

Pergunta
-
Respostas
-
segue um exemplo simples pra quem precisar..
primeiro preencho um dataSet.. no meu caso, criei um temporario dsTem e fiz a instancia dele baseado no que uso no decorrer do código pra ficar com a mesma estrutura.. depois preenchi esse dsTem com as linhas selecionadas.. isso ocorre no código abaixo..
Dim dsTem As New dsXML Dim strCNPJTomador As String, _ strRazaoSocialTomador As String, _ strUFTomador As String, _ strValorServicos As String, _ strValorLiquidoNFSE As String, _ strNumeroNFe As String, _ strNumeroRPS As String, _ strSerieRPS As String, _ strDataEmissaoRPS As String If grdXml.SelectedRows.Count > 0 Then Dim drc As DataGridViewSelectedRowCollection = grdXml.SelectedRows Dim ids As New List(Of String) For i As Integer = 0 To drc.Count - 1 strCNPJTomador = (drc(i).Cells(0).Value) strRazaoSocialTomador = drc(i).Cells(1).Value strUFTomador = drc(i).Cells(2).Value strValorServicos = drc(i).Cells(3).Value strValorLiquidoNFSE = drc(i).Cells(4).Value strNumeroNFe = drc(i).Cells(5).Value strNumeroRPS = drc(i).Cells(6).Value strSerieRPS = drc(i).Cells(7).Value strDataEmissaoRPS = drc(i).Cells(8).Value dsTem.tbXML.AddtbXMLRow(strCNPJTomador, strRazaoSocialTomador, strUFTomador, strValorServicos, strValorLiquidoNFSE, strNumeroNFe, strNumeroRPS, strSerieRPS, strDataEmissaoRPS) Next exportaDadosExcel(dsTem) Else MessageBox.Show("É necessário selecionar um ou mais linhas para exportar para o excel.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) End If
depois do dsTem preenchido, eu chamo uma função que faz a exportação para o excel.. passando o dataset como parametro..
Dim dr As DataRow Dim ds As DataSet = dsTem 'define o indice da célula da qual iremos extrair os dados Dim i As Integer = 2 'Inicia o Excel e cria um novo workbook/worksheet Dim excelApp As New Microsoft.Office.Interop.Excel.Application Dim excelBook As Microsoft.Office.Interop.Excel.Workbook = excelApp.Workbooks.Add Dim excelWorksheet As Microsoft.Office.Interop.Excel.Worksheet = CType(excelBook.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet) 'Torna o Excel invisível ao usuário até que a planilha seja preenchida excelApp.Visible = False With excelWorksheet 'Preenche cabeçalho For icol As Integer = 0 To ds.Tables(0).Columns.Count - 1 excelWorksheet.Cells(1, icol + 1).value = ds.Tables(0).Columns(icol).ColumnName Next 'Preenche a planilha Excel Try For Each dr In ds.Tables(0).Rows .Range("A" & i.ToString).Value = dr("CNPJTomador") .Range("A" & i.ToString).NumberFormat = "0;0" .Range("B" & i.ToString).Value = dr("RazaoSocialTomador") .Range("C" & i.ToString).Value = dr("UFTomador") .Range("D" & i.ToString).Value = dr("ValorServicos") .Range("E" & i.ToString).Value = dr("ValorLiquidoNFSE") .Range("F" & i.ToString).Value = dr("NumeroNFe") .Range("F" & i.ToString).NumberFormat = "0;0" .Range("G" & i.ToString).Value = dr("NumeroRPS") .Range("H" & i.ToString).Value = dr("SerieRPS") .Range("I" & i.ToString).Value = dr("DataEmissaoRPS") i += 1 Next Catch ex As Exception MessageBox.Show(ex, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try 'Torna o Excel visível excelApp.Visible = True End With
fica ai a dica pra quem quiser...
- Marcado como Resposta kngipa terça-feira, 23 de outubro de 2012 12:53