FoxPro/Visual FoxPro - Problema con formato de celda en excel

 
Vista:
Imágen de perfil de Yogui

Problema con formato de celda en excel

Publicado por Yogui (79 intervenciones) el 13/08/2014 21:53:48
Holaaaaa :)
Tengo un problema, cuando exporto datos a excel desde el VFP, tengo campos numéricos, que están con formato "general" en la celda, sin embargo me sale una advertencia de que se ha almacenado como texto, si yo presiono F2 y luego "enter" se corrige, pero la idea es que salga de frente, ya que manejo muchos registros, entonces hice esto:
loExcel.APPLICATION.RANGE("A:J").numberformat="####"
Pero nada.

P.D: loExcel.APPLICATION.RANGE("A:J").numberformat="@" creo que es para dar formato de campo texto, igual con ninguno se me resuelve el problema :(

Gracias :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema con formato de celda en excel

Publicado por Fidel José (558 intervenciones) el 14/08/2014 14:04:25
Para exportar con formatos, básicamente es lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
LPARAMETERS tcCursor
* tcCursor es el nombre del cursor que se exporta
 
local loExcel, loLibro , loSheet ,;
	i,j,lnfields ,xValor ,;
	lcCampo,lcType,lnDecim,lnRow,lnCol
 
LOCAL ARRAY gafields(1,4)
 
* Creando el objeto excel
TRY
	LOCAL loex as Exception
	loExcel = CREATEOBJECT("Excel.Application")
CATCH TO loEx
	loex.UserValue=PROGRAM()
	* showerror(loEx) && rutina de errores
ENDTRY
IF VARTYPE(loex)="O"
	WAIT clear
	RETURN .F.
ENDIF
 
loLibro=loExcel.workbooks.ADD()
loSheet = loExcel.ActiveSheet
 
lnfields=Afields(gaFields,tcCursor)
 
lnColIni=0
lnCol=0
lnRow=2
 
* Titulos
WITH loSheet
	.Cells(1,1).value="Cursor "+tcCursor
	FOR i=1 TO lnfields
		lcCampo=gaFields[i,1]
		.Cells(2,LnColIni+i).Value=PROPER(lcCampo)
		.Cells(2,lnColIni+i).FONT.bold =.t.
	NEXT
ENDWITH
 
* Datos
SELECT (tcCursor)
SCAN
	lnRow=lnRow+1
 
	for i=1 TO lnfields
		lnCol=lnColIni+i
		lcCampo=gaFields[i,1]
		lctype=gaFields[i,2]
		lnDecim=gaFields[i,4]
		xValor=EVALUATE(tcCursor+"."+lcCampo)
		with loSheet.Cells(lnRow,lnCol)
			DO case
				CASE lcType$"CM"
					IF lctype="C" AND EMPTY(CHRTRAN(xValor,"0123456789",""))
       						.NumberFormat = "@"
       				ENDIF
       				.Value=xValor
 
				CASE lcType$'NI'
    				        cNumform=iif(lnDecim=0,"#,##0","#,##0.")+Repli("0",lnDecim)
					.Style.IncludeNumber =.T.
					.NumberFormat=cNUmForm
					.VALUE=xValor
 
				CASE lcType="D"
   	    		        	IF !EMPTY(xValor)
						.VALUE=xValor
					endif
 
				CASE lctype="T"
					.VALUE=TTOC(xValor)
 
				CASE lcType="L"
					.Value=xValor
				OTHERWISE
					.value=xValor
			ENDCASE
 
		ENDWITH
 
	NEXT
 
ENDSCAN
loExcel.VISIBLE=.T.
STORE null TO loExcel,loSheet
RETURN .T.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con formato de celda en excel

Publicado por Juan Carlos Ojeda (1 intervención) el 05/11/2016 06:36:13
Excelente aportación, muchas gracias Fidel, yo he obtenido mucha ayuda de este sitio LWP pero ahora es la primera vez que agradezco formalmente, aunque siempre digo internamente "Muchas Gracias" pero no escribo nada. Yo programé hace algunos años en FoxPro para Windows 2.6 pero ahora dado el avance de las tecnologías programo en ASP con Visual Studio y recientemente me sugirieron hacer un sistema para control de obra para empresas constructoras, así que decidí hacerlo en Visual FoxPro 9. Me he encontrado con muchos problemas, que he resuelto con ayuda de todos ustedes. A lo que voy es que a partir de ahora yo también trataré de aportar, en la medida de mis posibilidades algo que yo ya haya resuelto, pero si no sé, prometo no comentar nada para no complicarles más la vida. Muchas gracias Nuevamente y suerte para todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar