ERRO DE FORMATACAO DE CAMPO EXCEL

ANDERSONITU 21/06/2013 09:55:42
#425056
Bom dia a todos,

estou com difuculdades para formatar um campo numérico no excel que estou exportando. Estou pegando as informações de um datagrid e quando o excel é exportado, o valor da coluna Contrato que é numérico esta saindo errado na planilha devido ao seu tamanho. Ex: No Grid está 350000038019 e na planilha sai 3,53E+11
Segue o fonte que estou utilizando para exportar o excel.
Agradeço desde já.

Public Class frmReclassificacaoHist

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 exportar e não foi indicado nome do arquivo
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
objExcelSheet.Cells(1, dgvColumnIndex).Interior.ColorIndex = 6
dgvColumnIndex += 1
Next

[ô] Ciclo nas linhas/células
Dim dgvRowIndex As Integer = 2
For Each row As DataGridViewRow In dgvReclassificacaoHist.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([Ô]Arquivo 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. 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
Faça seu login para responder