回复 30楼 hu9jj
VFP6.0
程序代码:oExcel = CreateObject("excel.application") &&创建 EXCEL 实例对象
With oExcel
.Workbooks.Add && 增加一个工作薄
.Sheets("Sheet1").Select
.Sheets("Sheet1").Name = "sample" && 改变SHEET名称
.Cells.Select && 全选工作簿
With .Selection.Font
.Name = "宋体"
.Size = 10
EndWith
ENDWITH
SELECT * FROM GZ INTO CURSOR TMP
JLS=TRANSFORM(RECCOUNT()+1)
oExcel.ActiveSheet.Rows(1).RowHeight=24 &&设置第1行至最后一行的高度
oExcel.ActiveSheet.Rows('2:&JLS').RowHeight=20
FOR I=1 TO FCOUNT()
MFIELD=FIELD(I)
OEXCEL.ActiveSheet.Columns(I).ColumnWidth=FSIZE(FIELD(I)) && 列的宽度(单位:字符个数)
OEXCEL.Cells(1,I).Value=FIELD(I) && 设置单元格的值(可以是字符串变量,表字段名)
OEXCEL.selection.HorizontalAlignment=3
FOR J=1 TO RECCOUNT()
GO J
OEXCEL.Cells(J+1,I).Value=&MFIELD
ENDFOR
ENDFOR
OEXCEL.visible = .T. && 可见VFP导入EXCEL:这段代码虽然不怎么精练,也有一定的缺限,但不受打开的EXCEL影响,运行正常。

程序代码:
IF USED()
nrecc=RECCOUNT()
NEWEXCEL=CREATEOBJECT("EXCEL.APPLICATION") &&建立EXCEL文件
WITH NEWEXCEL
.WORKBOOKS.ADD &&添加新EXCEL表
nFd=AFIELDS(aTitl) &&取总字段数及各字段名、属性等
FOR I = 1 TO nFd
.CELLS(1,I)=ALLTRIM(aTitl(I,1)) &&将数组中的标题写入第一行
ENDFOR
ENDWITH
GOTO TOP
nHbh=2
ON ERROR .CELLS(nHbh,I)="---"
DO WHILE !EOF() &&开始对记录的循环
WAIT WINDOW '共有'+ALLTRIM(STR(nrecc))+'条记录,正在转换第'+ALLTRIM(STR(RECNO()))+'条记录...' NOWAIT
FOR I = 1 TO nFd &&对记录中的每个字段进行处理
cFild=ALLTRIM(aTitl(I,1)) &&组成“表名.字段名”
cFild=&cFild
IF VARTYPE(cFild)="N"
IF cFild#0
NEWEXCEL.CELLS(nHbh,I)=cFild &&数值不为零则写入,
ENDIF
ELSE
IF VARTYPE(cFild)="C"
cFild=RTRIM(cFild) &&字符字段则截去尾部空格
NEWEXCEL.CELLS(nHbh,I).NumberFormatLocal="@"&&设置单元格属性为文本
ENDIF
NEWEXCEL.CELLS(nHbh,I)=cFild
ENDIF
ENDFOR
nHbh=nHbh+1
SKIP
ENDDO
MESSAGEBOX("数据导出已经完成,请注意保存文件!",64,"操作提示")
NEWEXCEL.ACTIVESHEET.PAGESETUP.ORIENTATION=1
NEWEXCEL.VISIBLE=.T. &&显示excel表以便继续编辑和保存
ON ERROR
ELSE
MESSAGEBOX('当前工作区没有打开的表!',64,'系统提示:')
ENDIF
RETURN