PROBLEMA EXPORTAR A EXCEL - FORMATO NUMERICO

241 views
Skip to first unread message

Jose Alberto Chaves

unread,
Aug 18, 2020, 10:58:12 PM8/18/20
to Comunidad de Visual Foxpro en Español
Saludos Amigos.

tengo un problema al momento de exportar a Excel.
resulta que aunque tenga campos tipo caracter si en estos guardo por ejemplo una cadena numerica de 12 digitos ( Ej : 123456789123 ) al momento de exportar a Excel se me muestra de esta forma : 


1.23446E+12 

si la cadena es menor de 12 digitos se muestra de forma correcta.

favor si alguien me puede ayudar, 
como les indique en visual fox estos campos son caracter.

El codigo que uso para exportar es este : 



**--GENERACION A MICROSOFT EXCEL

LError = On('error')
On Error xlapp = Null
xlapp = Getobject('Excel Application')
On Error &LError
If Isnull(xlapp)

**--Generamos la aplicacion
xlapp = Createobject('Excel.Application')
Endif

With xlapp
.Visible = 'True'
.DisplayAlerts = 'False'
.Workbooks.Add()
Endwith

xlsheet = xlapp.ActiveSheet

**--Formatos
With xlsheet
.Columns("A:K").Font.Name = "Tahoma"
.Columns("A:K").Font.Size = 10
.Columns("A:E").Font.Size = 10
.Columns("A:A").ColumnWidth = 25  &&codigo
.Columns("A:A").HorizontalAlignment = 1
.Columns("B:B").ColumnWidth = 75 &&descrip
.Columns("b:b").HorizontalAlignment = 1
.Columns("C:C").ColumnWidth = 17 &&existencia
.Columns("C:C").HorizontalAlignment = 1
.Columns("D:D").ColumnWidth = 17 &&costo
.Columns("D:D").HorizontalAlignment = 1
.Columns("E:E").ColumnWidth = 17 &&costo_t
.Columns("E:E").HorizontalAlignment = 1
.Columns("f:f").ColumnWidth = 25 &&familia
.Columns("f:f").HorizontalAlignment = 1
.Columns("g:g").ColumnWidth = 25 &&departamento
.Columns("g:g").HorizontalAlignment = 1
.Columns("h:h").ColumnWidth = 20 &&nactivo
.Columns("h:h").HorizontalAlignment = 1
.Columns("i:i").ColumnWidth = 20 &&nactivo
.Columns("i:i").HorizontalAlignment = 1
Endwith

Fila = 1

**--Titulo
xlsheet.Cells(Fila,1).Value = 'Reporte General de Artículos'

With xlsheet.Range("A1:a1")
.Font.Bold = 'True'
.HorizontalAlignment = 1
.font.size=12

Endwith

Fila = Fila + 2

**--Titulos de columna
xlsheet.Cells(Fila,1).Value = "Código"
xlsheet.Cells(Fila,2).Value = "Descripción"
xlsheet.Cells(Fila,3).Value = "Existencia Total"
xlsheet.Cells(Fila,4).Value = "Costo Ind."
xlsheet.Cells(Fila,5).Value = "Costo Total"
xlsheet.Cells(Fila,6).Value = "Familia"
xlsheet.Cells(Fila,7).Value = "Departamento"
xlsheet.Cells(Fila,8).Value = "N° de Activo"
xlsheet.Cells(Fila,9).Value = "N° de Serie"
Fila = Fila + 1

With xlsheet.Range("A3:m3")
.Font.Bold = 'True'
Endwith
thisform.Enabled=.f.

Select lista_artix

**--Levantamos campos y reemplazamos en columnas de la hoja
Scan
xlsheet.Cells(Fila,1).Value = lista_artix.codigo
xlsheet.Cells(Fila,2).Value = lista_artix.descrip
xlsheet.Cells(Fila,3).Value = lista_artix.existencia
xlsheet.Cells(Fila,4).Value = lista_artix.costo
xlsheet.Cells(Fila,5).Value = lista_artix.costo_t
xlsheet.Cells(Fila,6).Value = lista_artix.familia
xlsheet.Cells(Fila,7).Value = lista_artix.dep
xlsheet.Cells(Fila,8).Value = lista_artix.n_activo
xlsheet.Cells(Fila,9).Value = lista_artix.nserie
Fila = Fila + 1
Endscan
thisform.Enabled=.t.
Messagebox( " Exportación Terminada, Archivo de Excel creado ",64,(" Atención... " ))

**--Fin del codigo

  

Jorge Kiernan

unread,
Aug 19, 2020, 8:11:32 PM8/19/20
to publicesvfoxpro
Bueno, yo lo suelo enfocar al revés. Primero creo la planilla con un export to ... lo que me garantiza crear las columnas correctamente con sus títulos, y luego abro la planilla para agregar formatos, o lo que requiera. Usualmente le agrego formatos a las columnas numéricas, título general, totales al pie, y ese tipo de cosas,
Ahora, para tu caso puntual, probaria de darle formato a la celda a ver si entiende que son caracteres, o sino en la asignación de valor a la celda agregar un espacio en blando delante.
Espero que esto sea de utilidad. 

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/44b9ef8f-f814-45b1-9363-e50540cbb5b6n%40googlegroups.com.

Javier Bernal

unread,
Aug 19, 2020, 9:20:19 PM8/19/20
to Comunidad de Visual Foxpro en Español
Primero debes de conocer el tipo de la columna de excel para hacer la estructura

Gabriel Barreto

unread,
Aug 20, 2020, 10:41:13 AM8/20/20
to publice...@googlegroups.com
A las celdas que contendrán solo números pero que deben interpretarse como texto en Excel, agregale como 1er caracter una comilla simple, ésta -> ' 
O sea, antes de exportar el campo debería ser:

xlsheet.Cells(Fila,1).Value = "'"+ lista_artix.codigo  

Lo marcado en amarillo es comilla doble, comilla simple, comilla doble, signo positivo.
Es la única manera que he encontrado que excel no transforme los datos a número. 

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages