En VFP, ¿cómo convertir una tabla DBF en una tabla EXCEL XSL?
Simple, use Copiar a nombre de tabla EXCEL.xls escriba xl5. Tenga en cuenta que al ejecutar este comando, la tabla DBF a convertir debe estar en el espacio de trabajo actual. Puede seleccionar el espacio de trabajo a través de Seleccionar.
También proporcionamos algunos programas e información relacionada para exportar DBF a XSL mediante programación. Esperamos que le sea útil:
VFP a XLS&& DbfToExcel.PRG
CERRAR TODAS LAS BASES DE DATOS
ESTABLECER FECHA YMD
ESTABLECER SIGLO EN
cDbfFile = GETFILE("dbf")
IF EMPTY(cDbfFile)
RETURN
ENDIF
USE (cDbfFile) ALIAS FoxTable IN 0
IF NOT USED("FoxTable")
=MESSAGEBOX("¡Error al abrir la tabla, el programa abortará!", 16, "Error")
RETURN
ENDIF
cExcelFile = PUTFILE("&N):",JUSTSTEM(cDbfFile)+".xls","xls")
SI VACÍO (cExcelFile)
CERRAR TODAS LAS BASES DE DATOS
VOLVER
ENDIF
SELECCIONAR FoxTable
oExcelSheet = GETOBJECT( " ","Excel.Sheet") && Generar objeto de Excel
IF NOT TYPE("oExcelSheet") = "O"
=MESSAGEBOX("Error al crear el objeto de Excel, el programa terminará! ", 16, "Error")
RETURN
ENDIF
oExcelApp = oExcelSheet.Application
oExcelApp.Workbooks. Agregar( )
oExcelApp.ActiveWindow.WindowState=2
oSheet = oExcelApp.ActiveSheet
nFldCount = AFIELDS(aFldList, "FoxTable")
FOR i = 1 TO nFldCount
oSheet.Cells(1,i).Value = aFldListdColumn
FOR i=1 TO oGrid.COLUMNCOUNT
FOR ii =1 TO oGrid.COLUMNCOUNT
nOrder=oGrid.COLUMNS(ii).COLUMNORDER
IF nOrder=i
dColumn=oGrid.COLUMNS(ii ). header1.CAPTION
dColumn=oGrid.COLUMNS(ii).CONTROLSOURCE
EXIT
ENDIF
ENDFOR
ENDFOR
****Crear archivo de salida*****
cCopy=""
FOR i=1 TO ALEN(dColumn, 1)
cCopy=cCopy+dColumna+","
SIGUIENTE
cCopy=LEFT(cCopy,LEN(cCopy)-1)<
/p>
cCopy="COPY TO "+'"'+FILE_NAME+'"'+" TYPE XL5 FIELDS "+cCopy
&cCopy
&&Crea una tabla de Excel y Escribir encabezado
oexl=CREATEOBJECT("excel.APPLICATION")
CON oexl
.workbooks.OPEN(FILE_NAME)
. VISIBLE=.T.
.cells.Select
.Selection.FONT.Size=10
ENDWITH
Seleccione ALIAS( cRec )
=AFIELDS(cField,cRec)
****Agregue título chino a la primera línea*****
FOR i=1 TO ALEN(dColumn,1)
oexl.cells(1,i).VALUE=dColumn
****Procesamiento de datos para cada columna, divididos en caracteres y fechas numéricas** ** *
DO CASE
CASE TYPE(dColumn)="N"
***Encuentra los decimales de un valor****
FOR ii=1 TO ALEN(cField,1)
IF UPPER(dColumn)=UPPER(cRec)+"."+cField
nWS=cField
SALIR
ENDIF
SIGUIENTE
oexl.COLUMNS(retuabc(i)+":"+retuabc(i)). NumberFormatLocal = "# ,##0."+REPLICATE("0",nWs)+"_);[Rojo](#,##0."+REPLICATE("0",nWs)+")" p>
CASE TYPE(dColumn)="D" OR TYPE(dColumn)="T"
oexl.COLUMNS(retuabc(i)+":"+retuabc(i)).NumberFormatLocal = "yyyy/ mm/dd"
ENDCASE
NEXT
****Línea de tabla****
oexl. RANGE("A1 :"+retuabc(ALEN(dColumn,1))+ALLTRIM(Str(RECCOUNT()+1))).Select
oexl.Selection.BorderS(5).LineStyle = - 4142
oexl.Selection.BorderS(6).LineStyle = -4142
CON oexl.Selection.BorderS(7)
.LineStyl
e =1
.Peso = 2
.ColorIndex = -4105
TERMINAR CON
CON oexl.Selection.BorderS(8)
.LineStyle =1
.Weight = 2
.ColorIndex =-4105
ENDWITH
CON oexl.Selection.BorderS(9)
.LineStyle =1
.Peso = 2
.ColorIndex = -4105
ENDWITH
CON oexl.Selection.BorderS(10)
.LineStyle =1
.Weight = 2
.ColorIndex = -4105
TERMINAR CON
CON oexl.Selection.BorderS(11)
.LineStyle =1
.Peso = 1
.ColorIndex = -4105
TERMINAR CON
CON oexl.Selection.BorderS(12)
.LineStyle =1
.Weight = 1
.ColorIndex = -4105
ENDWITH
***La primera línea se muestra en gris y en negrita****
CON oexl.RANGE("A1:"+retuabc(ALEN(dColumn,1))+"1")
.HorizontalAlignment=3
.VerticalAlignment = 2< / p>
.WrapText = .T.
.FONT.bold=.T.
.Interior.ColorIndex = 40
ENDWITH p >
oexl.Rows("1:1").Select
oexl.Selection.INSERT
oexl.Selection.INSERT
oexl. .INSERT
&&Buscar
CON oexl.RANGE("A1:"+retuabc(ALEN(dColumn,1))+"1")
. fusionar
.VALUE=cHeader
.FONT.Size=14
.HorizontalAlignment=3
.VerticalAlignment=2 p >
.FONT.bold=.T.
ENDWITH
&&Agregar hora del informe
CON oexl.RANGE("A2:d2") p>
.merge
.VALUE="Hora del informe:"+TTOC(DATETIME())
ENDWITH
&&Agregar número de tabla Una columna
oexl.cells.Select
oexl.Selection.COLUMNS.AUTOFIT()
LIBERAR oexl
Regresar .T