回复 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