PROBLEMA AO GERAR EXCEL - COLUNA MAL FORMATADA

FERRUBIM 26/05/2016 10:02:19
#462605
uso o Microsoft.Office.Interop para gerar as planilhas no sistema, mas nao consigo enteder porque uma das colunas sempre sai errada,nesse caso a coluna 3 por exemplo que é 3554130065761000000 sai como 3,54413E+18 .. o campo esta definido como varchar(35) no banco de dados ... o mais estranho que a proxima coluna é um varchar(50) e sai corretamente no excel. (17.01.001.0002406583/13) ... abaixo como faço,alguem tem alguma ideia do porque ??

objExcel = New Microsoft.Office.Interop.Excel.Application()
Pasta1 = objExcel.Workbooks.Add()
Plan1 = objExcel.Worksheets.Add()
Plan1.Name = [Ô]Acordos[Ô]
Plan1.Activate()
Dim i As Integer
linha = 4
objExcel.ActiveSheet.Range([Ô]A1:A1[Ô]).merge()
objExcel.ActiveSheet.Cells(1, 1).Font.Bold = True
objExcel.ActiveSheet.Cells(1, 1).Value = [Ô]Planilha Acordos[Ô]
objExcel.ActiveSheet.cells(1, 1).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter
objExcel.ActiveSheet.Cells(3, 1).Value = [Ô]Nome do Cliente[Ô]
objExcel.ActiveSheet.Cells(3, 2).Value = [Ô]CPF/CNPJ[Ô]
objExcel.ActiveSheet.Cells(3, 3).Value = [Ô]Número Operação[Ô]
objExcel.ActiveSheet.Cells(3, 4).Value = [Ô]Número do Dossiê[Ô]
objExcel.ActiveSheet.Cells(3, 5).Value = [Ô]Nº Acordo[Ô]
objExcel.ActiveSheet.Cells(3, 6).Value = [Ô]Valor do Acordo[Ô]
objExcel.ActiveSheet.Cells(3, 7).Value = [Ô]Faixa de Atraso[Ô]
objExcel.ActiveSheet.Cells(3, 8).Value = [Ô]Percentual a ser aplicado[Ô]
objExcel.ActiveSheet.Cells(3, 9).Value = [Ô]Valor da Parcela solicitada referente a operação[Ô]
objExcel.ActiveSheet.Cells(3, 10).Value = [Ô]Valor do Honorário[Ô]
objExcel.ActiveSheet.Cells(3, 11).Value = [Ô]Número Parcela[Ô]
objExcel.ActiveSheet.Cells(3, 12).Value = [Ô]Data Vcto[Ô]
objExcel.ActiveSheet.Cells(3, 13).Value = [Ô]Dt.Aprovação[Ô]
objExcel.ActiveSheet.Cells(3, 14).Value = [Ô]Nr.Recibo[Ô]
objExcel.ActiveSheet.Cells(3, 15).Value = [Ô]Dt.Emissão NF[Ô]
objExcel.ActiveSheet.Cells(3, 16).Value = [Ô]Dt.Pagto NF[Ô]
objExcel.ActiveSheet.Cells(3, 17).Value = [Ô]Valor Hono. Recebido[Ô]
objExcel.ActiveSheet.Cells(3, 18).Value = [Ô]Valor Diferença Hono.[Ô]
objExcel.ActiveSheet.Cells(3, 19).Value = [Ô]Honorário Devido[Ô]
objExcel.ActiveSheet.Cells(3, 20).Value = [Ô]Observação[Ô]
objExcel.ActiveSheet.Cells(3, 21).Value = [Ô]Cliente Alega Pagto[Ô]
objExcel.ActiveSheet.Cells(3, 22).Value = [Ô]Observação Alega Pagto[Ô]
objExcel.ActiveSheet.Cells(3, 23).Value = [Ô]Usuário[Ô]


Aqui a leitura da selecao que fiz e jogo para o excel :

objExcel.ActiveSheet.Cells(linha, 1).Value = par.NM_PESSOA
objExcel.ActiveSheet.Cells(linha, 2).Value = par.CPF_CNPJ
objExcel.ActiveSheet.Cells(linha, 3).Value = par.NR_OPERACAO
objExcel.ActiveSheet.Cells(linha, 4).Value = par.NR_DOSSIE
objExcel.ActiveSheet.Cells(linha, 5).Value = par.NR_ACORDO_BANCO
objExcel.ActiveSheet.Cells(linha, 6).Value = par.VLR_SALDO_DEVEDOR
objExcel.ActiveSheet.Cells(linha, 6).NumberFormat = [Ô]###,###,##0.00[Ô]

......
......
......
......
......
......
......

JABA 26/05/2016 10:47:47
#462607
Resposta escolhida
Citação:

17.01.001.0002406583/13



Creio que o Excel identifica o número acima como string por causa da barra no final e por isso ele não muda sua formatação.

Citação:

3554130065761000000



Nesse caso, como só existem números, ele converte para Double.

Solução:

Converta explicitamente para Decimal ou para String no seu código:

objExcel.ActiveSheet.Cells(linha, 3).Value = CDec(par.NR_OPERACAO)


ou

objExcel.ActiveSheet.Cells(linha, 3).Value = CStr(par.NR_OPERACAO)


ou

objExcel.ActiveSheet.Cells(linha, 3).Value = par.NR_OPERACAO.ToString
FERRUBIM 26/05/2016 10:56:39
#462608
coloquei CStr(GridCliente.Rows.Item(nLinha).Cells(3).Value.ToString) mas no excel continou aparecendo 3,54413E+18

dai forcei concatenando com / , CStr(GridCliente.Rows.Item(nLinha).Cells(3).Value.ToString) & [Ô]/[Ô] daí vem o número correto 3554130065761000173/ porém com a barra no final... essa maldita [Ô]/[Ô] nao podia aparecer...


JABA 26/05/2016 11:00:04
#462610
Citação:

dai forcei concatenando com / , CStr(GridCliente.Rows.Item(nLinha).Cells(3).Value.ToString) & [Ô]/[Ô] daí vem o número correto 3554130065761000173/ porém com a barra no final... essa maldita [Ô]/[Ô] nao podia aparecer...



Isso aí só confirma o que eu havia dito. Tem que converter como fiz acima. Ou seja, na hora que passar para os campos da planilha.
FERRUBIM 26/05/2016 11:18:39
#462611
Mas estou fazendo isso, tanto objExcel.ActiveSheet.Cells(linha, 3).Value = par.NR_OPERACAO.ToString como objExcel.ActiveSheet.Cells(linha, 3).Value = CStr(par.NR_OPERACAO) colocam 3,54413E+18 .... somente se no final concateno com uma barra é q aparece o correto 3554130065761000173/
JABA 26/05/2016 11:26:05
#462613
Tenta com CDec(valor) ou Convert.toDecimal(valor)
Tópico encerrado , respostas não são mais permitidas