VFP导出到EXCEL文件的另类方法[ 2005-09-28 08:58:07 | 作者: 花狐狸 ]
论坛中在讨论VFP导出到EXCEL文件的方法,其中的方法以前都有试过,或多或少都有些不近人意的地方,比如字符形数字变成了数字,身份证号码居然是科学计数显示
几年来一直用这样的方法处理,请大家点评 LOCAL lsWJM,OleApp m.lsWJM=PUTFILE("文件名:","未命名.XLS","XLS") IF EMPTY(m.lsWJM) RETURN ENDIF USE 数据表 COPY TO SYS(2023)+"\TMP.DBF" FOX2X USE OleApp=CREATEOBJECT("Excel.Application") WITH OleApp .DisplayAlerts=.F. .Application.WorkBooks.Open(SYS(2023)+"\TMP.DBF") .ActiveSheet.UsedRange.Select .Selection.Copy .Workbooks.Add .Range("A1").Select .Selection.PasteSpecial() .Selection.Columns.AutoFit .Range("A1").Select _CLIPTEXT="" .Application.Windows("TMP.DBF").Activate .ActiveWindow.Close DELETE FILE SYS(2023)+"\TMP.*" .ActiveWorkbook.SaveAs(m.lsWJM) .Application.Visible=.T. .DisplayAlerts=.T. ENDWITH RELEASE OleApp OleApp = Null 如果你是固定的数据,可以将EXCEL文件做成模板,设置纸张大小、页边距、字体字号、标题、表头等,然后在需要导入数据的单元格中输入"开始记录"(不要输入引号) LOCAL lsWJM,OleApp,YXGZS,H m.lsWJM=PUTFILE("文件名:","未命名.XLS","XLS") IF EMPTY(m.lsWJM) RETURN ENDIF IF !FILE("模板文件.XLS") =MessageBox("请先创建Excel模板文件!",64,"宇星工作室") RETURN ENDIF USE 数据表 COPY TO SYS(2023)+"\TMP.DBF" FIELDS FieldList FOX2X &&选择所需要的字段 USE OleApp=CREATEOBJECT("Excel.Application") WITH OleApp .DisplayAlerts=.F. .Application.WorkBooks.Open(SYS(2023)+"\TMP.DBF") .ActiveSheet.UsedRange.Select .Selection.Copy .Application.WorkBooks.Open(SYS(5)+SYS(2003)+"\模板文件.XLS") && 模板文件需要路径 .Range("A1").Select m.YXGZS=.Cells.Find("开始记录",.ActiveCell,-4123) IF VARTYPE(m.YXGZS)="O" m.YXGZS.Activate Release YXGZS m.H=.ActiveCell.Row .Selection.PasteSpecial(-4163,-4142,.F.,.F.) &&仅粘贴数值 .Rows(m.H).Select .Selection.Delete ELSE .Selection.PasteSpecial() .Selection.Columns.AutoFit ENDIF .Range("A1").Select _CLIPTEXT="" .Application.Windows("TMP.DBF").Activate .ActiveWindow.Close DELETE FILE SYS(2023)+"\TMP.*" .ActiveWorkbook.SaveAs(m.lsWJM) .Application.Visible=.T. .DisplayAlerts=.T. ENDWITH RELEASE OleApp OleApp = Null |
|