none
exportar para excel RRS feed

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
    terça-feira, 23 de outubro de 2012 12:46