chaoticshitty:VFP导出到EXCEL文件的另类方法

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 09:33:12

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