Ir para o conteúdo
magtaem

DatagridView - Excel

Mensagens Recomendadas

magtaem

Boas tenho esta função para exportar dados de uma datagridview para o excel, mas gostava de colocar os titulos no excel ( Os titulos do excel são os titulos dos dados que ficam em cima em negrito) á minha maneira, como moldo este código para isso ?

Abraço,

Module excelextract
Enum xlsOption
    xlsSaveAs
    xlsOpen
End Enum
'     <summary>
'Exporta a informação de uma DataGridView para o Microsoft Excel
'     </summary>
' <param name="dgvName">Nome da DataGridView </param>
' <param name="option">SaveAs ou Open</param>
'     <param name="fileName">Nome completo do ficheiro</param>
Public Sub ExportToExcel(ByVal dgvName As DataGridView, ByVal [option] As xlsOption, Optional ByVal fileName As String = "")
    Dim objExcelApp As New Excel.Application()
    Dim objExcelBook As Excel.Workbook
    Dim objExcelSheet As Excel.Worksheet
    Try
        ' Se foi seleccionada a opção xlsSaveAs e não foi indicado ficheiro
        If [option] = xlsOption.xlsSaveAs And fileName = String.Empty Then
            MessageBox.Show("É necessário indicar um nome para o ficheiro")
            Exit Sub
        End If
        ' Altera o tipo/localização para Inglês. Existe incompatibilidade
        ' entre algumas versões de Excel vs Sistema Operativo
        Dim oldCI As CultureInfo = CurrentThread.CurrentCulture
        CurrentThread.CurrentCulture = New CultureInfo("en-US")
        ' Adiciona um workbook e activa a worksheet actual
        objExcelBook = objExcelApp.Workbooks.Add
        objExcelSheet = CType(objExcelBook.Worksheets(1), Excel.Worksheet)
        ' Ciclo nos cabeçalhos para escrever os títulos a bold/negrito
        Dim dgvColumnIndex As Int16 = 1
        For Each col As DataGridViewColumn In dgvName.Columns
            objExcelSheet.Cells(1, dgvColumnIndex) = col.HeaderText
            objExcelSheet.Cells(1, dgvColumnIndex).Font.Bold = True
            dgvColumnIndex += 1
        Next
        ' Ciclo nas linhas/células
        Dim dgvRowIndex As Integer = 2         For Each row As DataGridViewRow In dgvName.Rows
            Dim dgvCellIndex As Integer = 1
            For Each cell As DataGridViewCell In row.Cells
                objExcelSheet.Cells(dgvRowIndex, dgvCellIndex) = cell.Value
                dgvCellIndex += 1
            Next
            dgvRowIndex += 1
        Next
        ' Ajusta o largura das colunas automaticamente
        objExcelSheet.Columns.AutoFit()
        ' Caso a opção seja gravar (xlsSaveAs) grava o ficheiro e fecha
        ' o Workbook/Excel. Caso contrário (xlsOpen) abre o Excel
        If [option] = xlsOption.xlsSaveAs Then
            objExcelBook.SaveAs(fileName)
            objExcelBook.Close()
            objExcelApp.Quit()
            MessageBox.Show("Ficheiro exportado com sucesso para: " & fileName)         Else
            objExcelApp.Visible = True
        End If
        ' Altera a tipo/localização para actual
        CurrentThread.CurrentCulture = oldCI
    Catch ex As Exception
        MessageBox.Show("Erro não identificado. Este erro acontece para testes." & vbNewLine & " Por favor tenha paciência a função irá ser efetuada mas este erro ocorrerá." & vbNewLine & " Mensagem original:" & vbNewLine + ex.Message)
    Finally
        objExcelSheet = Nothing
        objExcelBook = Nothing
        objExcelApp = Nothing
        ' O GC(garbage collector) recolhe a memória não usada pelo sistema.
        ' O método Collect() força a recolha e a opção WaitForPendingFinalizers
        ' espera até estar completo. Desta forma o EXCEL.EXE não fica no
        ' Task Manager(gestor tarefas) ocupando memória desnecessariamente
        ' (devem ser chamados duas vezes para maior garantia)
        GC.Collect()
        GC.WaitForPendingFinalizers()
        GC.Collect()
        GC.WaitForPendingFinalizers()
    End Try
End Sub

End Module

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.