VFP导出到EXCEL文件的另类方法
VFP导入导出Excel程序设计与分析
一
表格处理软件 , 在兼 容性 、 操作界 面 、 式运算 、 公 图表 等方面有着 独到的优势 , 成为广大办公应用 人员必备 的首选 软件 。上述两种
软 件 在 各 自的 应 用 领 域 均 得 到 了 广 泛 的 应 用 . 时 上 述 两 种 软 件 同 还 具 有 良好 的 交 互 编 程 能 力 。 两 者 相 辅 相 成 、 长 补 短 奠 定 了 为 取 良好 的 基础 但 是 , 于大 多 数 非 专 业 人 士来 说 , 全 面 掌 握 好 V P操 作 对 要 F 是 个 比较 困难 的事 情 , 以 . 关 专 业 人 士 都 致 力 于 用 V P开 发 所 相 F 出更容易掌握 , 操作更方便和实用的软件。对于数据处理 , F V P能 与 E cl 好的结合 , 么用 V P编写 软件时 。 怎样进行 程序 xe 很 那 F 应 设计才能实现 V P与 E cl F xe 的导人 导出功能呢?
,
i i t e g o o lt a aa ae e l y d p o e u e ma ig E c li a u s n n lcr n c f r s f r t s h o d t o h ta d tb s mp o e r c d r k n , x e s n o tt d g ee t i o m o t e a i o wa
从VFP中导出数据的几种方法
从VFP中导出数据的几种方法出处:网络当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应用程序(如Excel等)所用。
下面向你简单介绍几种导出数据的方法:1.用“导出数据”对话框。
你可以从VFP主菜单中选择“文件/导出…”打开“导出”对话框,在该对话框中的“来源”框中输入表名(c:vfpstudents.dbf),在“类型”中指定要导出数据的类型(Microsoft Excel),在“到”框中输入导出的路径和文件名(C:excelaa.xls),然后按“确定”即可。
这时你如果查看command窗口,可发现以下代码:COPY TO C:excelaa.XLS TYPE XL52.用COPY TO命令。
COPY TO命令的工作对象是VFP中的表,它要依据“TYPE”项才知道要产生哪一类导出文件。
对于上面的导出过程,可用以下方法实现:USE studentsCOPY TO C:excelaa.XLS TYPE XL53.用SET ALTERNATE TO写入ASCⅡ文件。
用该命令可以把屏幕上的内容导出,导向一个文件,下面例子可以将系统状态输入到status.txt文件中:SET ALTERNATE TO status.txtSET ALTERNATE ONSET CONSOLE OFF?“系统状态”+DTOC(DATE())+“@”+TIME()LIST STATUSSET ALTERNATE OFFSET CONSOLE ON4.用SET PRINTER TO命令。
用该命令可把打印输出到文本文件中:SET PRINTER TO hello.txtSET PRINT ON???CHR(27)+“广大计算机爱好者”??“你们好!”?“祝你们新年快乐”SET PRINT OFF5.用REPORT FORM TO FILE命令。
运行报表的REPORT命令有许多选项,把报表输出保存到文件中的方法为:REPORT FORM(报表名)TO FILE(文件名)。
VFP数据导出到EXCEL技术
VFP数据导出到EXCEL技术VFP数据导出到EXCEL技术我们都知道在EXCEL 中有很多很多的计算公式、灵活多变的计算方式、方便快捷的图表处理、和功能强大的VBA 语言,可以说EXCEL 可能是最好用的表格处理软件。
我敢说:微软的产品中大概就EXCEL 最好!但是,怎样用Foxpro 快速产生统计表,并将数据送到Excel 表格中,从而代替Foxpro 的报表工具呢?我们大家都知道,在Visual Foxpro 3.0及以后版本中提供了一个调用Ole Automation 的函数CREATEOBJECT,用该函数可以让Visual Foxpro 很方便的和其它可以提供Ole Automation 服务的程序进行通讯。
而Excel 更是一个标准的Ole Automation 服务器程序,我们可以在前端将数据传送到后端的Excel 服务程序,用后端服务程序进行表格处理,从而弥补Visual Foxpro的不足。
由于历史原因,我们作报表都习惯用Total、Count、Sum 或者直接在报表中工具中计算,速度最快的大概也就是Total 了,但不知道还有多少人还在坚持使用Total 命令进行计算,有没有更好的计算方法呢?当然有啦!我在实际使用中积累有一定的经验但愿能给各位起到小小的启发。
假设有一表:Table1 是一个人员档案,里面的表结构如下:-----字段名--类型及长度---------编号C,2部门C,10姓名C,10性别C,2出生日期 D职务C,10文化程度C,10内容大概如下TABLE1.DBF---------------------------------编号部门姓名性别出生日期职务文化程度---------------------------------1 工程部张三男1971-01-11 工程师大学本科 2 销售部李四男1967-02-23 经理大学本科 3 工程部王武1954-03-14 技术员大学专科4 总经理室赵洁雅女1975-04-05 秘书硕士研究生5 销售部..1977-05-09 销售经理高中 6 工程部大文1969-03-30 总工程师大学专科7 销售部..1961-10-10 销售经理大学专科8 总经理室庄稼1961-10-10 总经理大学专科当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。
VFP数据导出到EXCEL技术.
VFP数据导出到EXCEL技术我们都知道在 EXCEL 中有很多很多的计算公式、灵活多变的计算方式、方便快捷的图表处理、和功能强大的VBA 语言,可以说 EXCEL 可能是最好用的表格处理软件。
我敢说:微软的产品中大概就 EXCEL 最好!但是,怎样用 Foxpro 快速产生统计表,并将数据送到 Excel表格中,从而代替 Foxpro 的报表工具呢?我们大家都知道,在 Visual Foxpro 3.0及以后版本中提供了一个调用Ole Automation 的函数 CREATEOBJECT,用该函数可以让 Visual Foxpro 很方便的和其它可以提供 Ole Automation 服务的程序进行通讯。
而 Excel 更是一个标准的 Ole Automation 服务器程序,我们可以在前端将数据传送到后端的 Excel 服务程序,用后端服务程序进行表格处理,从而弥补 Visual Foxpro的不足。
由于历史原因,我们作报表都习惯用 Total、Count、Sum 或者直接在报表中工具中计算,速度最快的大概也就是 Total 了,但不知道还有多少人还在坚持使用 Total 命令进行计算,有没有更好的计算方法呢?当然有啦!我在实际使用中积累有一定的经验但愿能给各位起到小小的启发。
假设有一表:Table1 是一个人员档案,里面的表结构如下:-----字段名--类型及长度---------编号C,2部门C,10姓名C,10性别C,2出生日期 D职务C,10文化程度C,10内容大概如下TABLE1.DBF---------------------------------编号部门姓名性别出生日期职务文化程度---------------------------------1 工程部张三男1971-01-11 工程师大学本科2 销售部李四男1967-02-23 经理大学本科3 工程部王武1954-03-14 技术员大学专科4 总经理室赵洁雅女1975-04-05 秘书硕士研究生5 销售部..1977-05-09 销售经理高中6 工程部大文1969-03-30 总工程师大学专科7 销售部..1961-10-10 销售经理大学专科8 总经理室庄稼1961-10-10 总经理大学专科当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。
VF中正确导入EXCEL表的几种方法
VF中正确导入EXCEL表的几种方法一次在处理全县小学生毕业会考成绩时,由于各学校交的表格不一致,也不方便统计,为了统计方便、快速、准确无误,把EXCEL表格转换为VF的表,但在转换过程中,打开VFP,点击菜单的“文件”——“导入”,将excel表格导入成VF的表时!出现了如下图的C00005异常代码!!!经过认真思考,反复探索、多次实践,终于探索出正常将excel表格导入成VF的表的几种方法,以供大家分享。
(1)用向导导入。
现在的xls文件一般都是Excel 2000或更高版本做的。
要用向导导入时,必须注意其格式,用VFP6.0和EXCEL2000,在VFP6.0里导入EXCEL2000表就会出现"出现C00005代码异常"提示。
出现这种错误后,不要急,没有其它软件也不怕,你只要在Excel中打开先要导入的文件表,然后另存为Excel 5.0格式的表格,再用向导导入刚才另存的Excel 5.0格式的表格就可以正确了。
(2)除了上面这种方法外,经过认真思考,还可以通过VF中表与文本文件之间的数据交换命令appe from 来实现转换。
具体步骤如下,首先打开Excel文件,在另存对话框中选文本文件(制表符分隔)格式,然后保存;再进入VFP,打开数据表(自己先建立一个数据表);然后用APPE FROM 文本文件.TXT DELI WITH TAB将文本文件内容导入到自己新建的数据表中。
注意:自己所建的表中字段宽度要给宽一点,类型一律用字符型,否则给出现数据丢失。
(3)用低级文件控制函数转换TEXT文件到VF表中。
先将Excel文件另存为文本文件(制表符分隔);再用VF中的低级文件控制函数转换TEXT文件到VF表中。
首先看一下文本文件(制表符分隔)的格式:在WINDOWS文本文件格式中,每行文本的末尾包括两个不可见字符,即一个是回车符CHR(13)与另一个换行符CHR(10),在读取过程中,需要将这两个字符删除;文本文件中各项采用空格“”或换行符CHR(9)或逗号“,”分隔。
EXCEL文档与VFP (DBF)数据库文档的相互转换
EXCEL文档与VFP (DBF)数据库文档的互相转换(以EXCEL2003和VFP6.0为例进行说明,其他版本类似)在办公过程中,有时为适应不同程序的需要,我们需要进行文档的转换。
微软的办公软件是我们使用得最多的。
在MS OFFICE中的EXCEL和VFP的数据库DBF文档之间进行转换,很多人都会把DBF文档转换成EXCEL文档,不就是直接导出就行了嘛。
但是,把EXCEL文档转换成DBF 数据库文档很多人就不会了,这里详细解说一下具体操作。
一、VFP数据库文档(*.dbf)转EXCEL文档(*.xls)直接导出成EXCEL(*.xls)文档就行了。
1、启用VFP6.0,打开要转换的DBF文档。
可点击“显示”-“浏览”查看刚打开的DBF数据库文档。
2、点击“文件”-“导出(E)……”,打开对话框,在“类型”里选择Microsoft Excel 5.0(XLS),在“到(O)”里输入将要生成的文件存储位置及文件名,也可点如下红圈里位置直接指明位置,点保存。
此时就将VFP数据库文档(*.dbf)转换成了EXCEL文档(*.xls)文档,可直接打开新生成的EXCEL文档,保存时会出现如下提示,直接点是保存为EXCEL2003版的格式。
二、将EXCEL文档(*.xls) 转成VFP数据库文档(*.dbf)一般我们可以直接使用VFP的导入功能。
启动VFP6.0,点击“文件”-“导入(I)……”,打开对话框,在“类型”里选择Microsoft Excel 5.0(XLS),定位到来源文件,再点确定就生成了一个新的DBF文档。
但是,我们再进行浏览时会发现字段名不对,本来应该是字段名的成了第一条记录了!如下图:实际上我们的操作略作修改就可以了方法1:(此法最简单)在对EXCEL保存时选“另存为”,选择保存类型为DBF4(Dbase IV)(*.dbf)格式。
当鼠标点选的单元格在数据区域外进行保存时,会出现以下提示框:当点选了数据区域内的单元格后再进行保存操作就可以了。
EXCEL文档和VFP-(DBF)数据库文档的相互转换
EXCEL文档与VFP (DBF)数据库文档的互相转换(以EXCEL2003和VFP6.0为例进行说明,其他版本类似)在办公过程中,有时为适应不同程序的需要,我们需要进行文档的转换。
微软的办公软件是我们使用得最多的。
在MS OFFICE中的EXCEL和VFP的数据库DBF文档之间进行转换,很多人都会把DBF文档转换成EXCEL文档,不就是直接导出就行了嘛。
但是,把EXCEL文档转换成DBF 数据库文档很多人就不会了,这里详细解说一下具体操作。
一、VFP数据库文档(*.dbf)转EXCEL文档(*.xls)直接导出成EXCEL(*.xls)文档就行了。
1、启用VFP6.0,打开要转换的DBF文档。
可点击“显示”-“浏览”查看刚打开的DBF数据库文档。
2、点击“文件”-“导出(E)……”,打开对话框,在“类型”里选择Microsoft Excel 5.0(XLS),在“到(O)”里输入将要生成的文件存储位置及文件名,也可点如下红圈里位置直接指明位置,点保存。
此时就将VFP数据库文档(*.dbf)转换成了EXCEL文档(*.xls)文档,可直接打开新生成的EXCEL文档,保存时会出现如下提示,直接点是保存为EXCEL2003版的格式。
二、将EXCEL文档(*.xls) 转成VFP数据库文档(*.dbf)一般我们可以直接使用VFP的导入功能。
启动VFP6.0,点击“文件”-“导入(I)……”,打开对话框,在“类型”里选择Microsoft Excel 5.0(XLS),定位到来源文件,再点确定就生成了一个新的DBF文档。
但是,我们再进行浏览时会发现字段名不对,本来应该是字段名的成了第一条记录了!如下图:实际上我们的操作略作修改就可以了方法1:(此法最简单)在对EXCEL保存时选“另存为”,选择保存类型为DBF4(Dbase IV)(*.dbf)格式。
当鼠标点选的单元格在数据区域外进行保存时,会出现以下提示框:当点选了数据区域内的单元格后再进行保存操作就可以了。
如何实现Foxpro和Excel数据间相互转换
系统 以 E cl电 子 表 形 式 显 x e
示 D F文 件 的 数 据 。注 意 , 当 前 B 文 档 的 名 称 是 “ 门 证 . b” 出 d f 。并
在 计 算 机 软 件 中 , Mirsf 绍 几 种 常 用 转换 方 法 。 coot
E cl 有 强 大 的制 表 功 能 ,F x xe 具 o.
x e 工作 表 保 存 , 则还 须 以选 ( ) 接 打 开 异 构 数 据 文 件 以 E cl 一 直 菜单 “ 另存 为”, 定 保 存 类 型 为 指 从 D F 格 式 转 换 成 E cl工 B xe
( 用 审 计 标 记 语言 后 ) 使
由 上 面 的 比 较 图 我 们 可 以看 到 ,在 使 用 审 计 标 记 语 言 后 ,我 们 可 以最 大 限 度 的 减 少 数 据 接 口
维普资讯
计 算 机 审计
作 表 格 式 非常 方 便 ,可 以 直接 打
开。 具体 操 作 如 下 : 1 .启 动 E c l 点击 主 选 菜单 x e。
“ 件 ” “ 开 ” 文 下 打 ;
2 .在 “ 开 ” 话 窗 的 “ 件 打 对 文
类型 ” 下拉 列表 里 , 选取 “ b s d ae文
件 ( .b) 。 且 指 定 盘 符 和 文 ★ df” 并
件 夹 。找 到 欲 打 开 的 D F文件 , B 例 如 :D :\ s2 0 j0 2\ fx 出 门 证 o\
.
d f b;
3 .点 击 “ 开 ” 钮 。 打 按
段 名 称
门 证 . l: xs
仲 国事计信息与方法’ 02 | o 20 车I l 期
从VFP中导出数据的几种方法
从VFP中导出数据的几种方法从VFP中导出数据的几种方法出处:网络当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应用程序(如Excel等)所用。
下面向你简单介绍几种导出数据的方法:1.用“导出数据”对话框。
你可以从VFP主菜单中选择“文件/导出…”打开“导出”对话框,在该对话框中的“来源”框中输入表名(c:vfpstudents.dbf),在“类型”中指定要导出数据的类型(Microsoft Excel),在“到”框中输入导出的路径和文件名(C:excelaa.xls),然后按“确定”即可。
这时你如果查看command窗口,可发现以下代码:COPY TO C:excelaa.XLS TYPE XL52.用COPY TO命令。
COPY TO命令的工作对象是VFP中的表,它要依据“TYPE”项才知道要产生哪一类导出文件。
对于上面的导出过程,可用以下方法实现:USE studentsCOPY TO C:excelaa.XLS TYPE XL53.用SET ALTERNATE TO写入ASCⅡ文件。
用该命令可以把屏幕上的内容导出,导向一个文件,下面例子可以将系统状态输入到status.txt文件中:SET ALTERNATE TO status.txtSET ALTERNATE ONSET CONSOLE OFF“系统状态”+DTOC(DATE())+“@”+TIME()LIST STATUSSET ALTERNATE OFFSET CONSOLE ON4.用SET PRINTER TO命令。
用该命令可把打印输出到文本文件中:SET PRINTER TO hello.txtSET PRINT ONCHR(27)+“广大计算机爱好者”“你们好!”“祝你们新年快乐”SET PRINT OFF5.用REPORT FORM TO FILE命令。
运行报表的REPORT命令有许多选项,把报表输出保存到文件中的方法为:REPORT FORM(报表名)TO FILE(文件名)。
巧让FoxPro数据生成Excel报表
巧让FoxPro数据生成Excel报表巧让FoxPro数据生成Excel报表Visual FoxPro是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到D BF数据文件。
然而随着办公自动化的普及,越来越多的时候需要将DBF文件转化为Excel 电子文档。
常用转化方法是在FoxPro中用Copy命令进行格式转化或直接用Excel打开DB F文件。
这两种方式虽然都能达到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的Excel文件中,无法对数据类型进行有效转换,极易出现数据统计错误。
有没有更好的方法呢?这里有一个更加通用的方法,在VFP中调用Excel,可以由DBF文件直接生成格式如下图所示一样复杂的Excel报表(如图1)。
图1 Excel报表具体过程如下:假设我们要将表Agcallop.dbf文件输出为Excel格式文档,报表形如图1所示。
为使通用性更强,页面采用A4纸横向输出,默认字体为宋体10号,页脚处添加页号。
部分程序代码如下:m.outfilename=putfile('输出结果','agcallop','xls')&&取导出文件名称ef=CREATEOBJECT('Excel.application')&&调用Excel程序ef.Workbooks.add&&添加工作簿ef.Worksheets("sheet1").Activate&&激活第一个工作表ef.visible=.t.&&显示Excel界面ef.Cells.Select&&选择整张表ef.Selection.Font.Size = 10&&设置整表默认字体大小为10 select 0use agcallop&&选择被导出的表num=reccount()&&求导出总记录数go topi=5ef.range("F1:K1").Select&&选择标题栏所在单元格ef.Selection.Merge&&合并单元格with ef.range("F1 ")&&设置标题及字体属性.value='客户服务部业务代表工作量情况统计表' ="黑体".Font.size=18endwithef.Rows(2).RowHeight=1/0.035&&设置第二行高度为1cmef.range("H2:O2").Select&&选定统计条件栏所在单元格ef.Selection.Merge&&合并单元格ef.range("H2").Font.size=10ef.range("H2").HorizontalAlignment=4&&设置内容对齐方式为右对齐,3为居中,2为右对齐ef.range("H2").value='统计时间:'+dtoc(date())+' 打印日期:'+dtoc(date()) ef.Rows("3:4").Selectwith ef.Selection.HorizontalAlignment = 3&&设置3、4行为水平对齐.VerticalAlignment = 2&&垂直居中.NumberFormatLocal = "@"&&设置3、4行为字符型内容endwithef.Range("A3:A4").Selectef.Selection.Merge&&纵向合并第一列3、4行ef.Range("A3").Value='工号'&&设置第一列标题内容ef.Columns("A").Select&&整列选择ef.Selection.HorizontalAlignment = 3 &&水平居中ef.Columns("A:B").Selectef.Selection.NumberFormatLocal = "@" &&设置A、B列为字符型内容ef.Range("B3:B4").Selectef.Selection.Merge&&纵向合并第二列3、4行ef.Range("B3").Value='姓名'&&设置第二列标题内容ef.Columns("B").Select&&整列选择ef.Selection.HorizontalAlignment = 3 &&水平居中ef.Range("C3:E3").Select&&横向合并第三行C-E列ef.Selection.Mergeef.Range("C3").Value='话务总量'&&第三行大标题为“话务总量”的列ef.Range("C4").Value='电话呼入量'&&“话务总量”下第1个小标题“电话呼入量”ef.Range("D4").Value='电话呼出量'&&“话务总量”下第2个小标题“电话呼出量”ef.Range("E4").Value='合计'&&“话务总量”下第3个小标题“合计”ef.Range("F3:H3").Selectef.Selection.Mergeef.Range("F3").Value='话务总时间'ef.Range("F4").Value='呼入时间'ef.Range("G4").Value='呼出时间'ef.Range("H4").Value='合计'ef.Range("I3:K3").Selectef.Selection.Mergeef.Range("I3").Value='单个话务平均时间' ef.Range("I4").Value='呼入时间'ef.Range("J4").Value='呼出时间'ef.Range("K4").Value='合计'ef.Range("L3:L4").Selectef.Selection.Mergeef.Range("L3").Value='累计工作时间' ef.Range("M3:M4").Selectef.Selection.Mergeef.Range("M3").Value='无效时间'ef.Range("N3:N4").Selectef.Selection.Mergeef.Range("N3").Value='录入量'ef.Range("O3:O4").Selectef.Selection.Mergeef.Range("O3").Value='有效时间比'接下来通过scan语句,依次为每一行每一列单元格赋值。
vf6导入导出excel
工程中添加对microsoft excel 8.0对象库的引用为应用程序工作簿工作表对象声明对象变量dim xlApp as excel.applicationdim xlbook as excel.workbookdim xlsheet as excel.worksheet将对象引用赋值给变量,用ADD方法创建新的工作簿和工作表对象set xlapp=new excel.applicationset xlbook=slapp.workbooks.addset xlsheet=xlbook.worksheets.add将文本框中的值赋给microsoft excel单元xlsheet.cells(1,1).value=text1.textxlsheet.cells(2,1).value=text2.text用formula方法将microsoft excel中的值相加xlsheet.cells(3,1).formula="=r1c1+r2c1"text3.text=xlsheet.cells(3,1)保存工作表xlsheet.saveas "c:\temp.xls"关闭工作表xlbook.close关闭microsoft excelxlapp.quit释放对象set xlapp=nothingset xlbook=nothingset xlsheet=onthing主要说明了程序中怎样操作Excelvf6自带有导入导出excel功能,可以先打开dbf文件,导出为excel5.0,打开,将数据输入后,注意还保存为excel5.0格式,打开dbf文件,导入就行了,Fox中操作Excel*1.创建Excel对象eole=CREATEOBJECT('Excel.application')* 2.添加新工作簿eole.Workbooks.add激活指定的工作簿eole.WorkSheets("工作簿名").Activate* 3.设置第3个工作表为激活工作表eole.Worksheets("sheet1").Activate* 4.打开指定工作簿eole.Workbooks.add("E:\E_temp\ABC.xls")* 5.显示Excel窗口eole.visible=.t.* 6.更改Excel标题栏eole.Caption="VFP应用程序调用Microsoft Excel"* 7.给单元格赋值* eole.cells(行,列).value=XM(XM为数据库字段名)eole.cells(1,4).value='ASDFASDFASDFASDFADSF'* 8.设置指定列的宽度(单位:字符个数)eole.ActiveSheet.Columns(1).ColumnWidth=5* 9.设置指定行的高度(单位:磅)eole.ActiveSheet.Rows(1).RowHeight=1/0.035 && 设定行高为1厘米,1磅=0.035厘米* (设定行高为1厘米,1磅=0.035厘米)* 10.在第18行之前插入分页符eole.Worksheets("Sheet1").Rows(18).PageBreak=1* 11.在第4列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=0* 12.指定边框线宽度(Borders参数如下)eole.ActiveSheet.Range("b3:d3").Borders(2).Weight=3* 13.设置四个边框线条的类型eole.ActiveSheet.Range("b3:d3").Borders(1).LineStyle=1* (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle 值:1与7-细实、2-细虚、4-点虚、9-双细实线)* 14.设置页眉eole.ActiveSheet.PageSetup.CenterHeader="报表1"* 15.设置页脚eole.ActiveSheet.PageSetup.CenterFooter="第&P页"* 16.设置页眉到顶端边距为2厘米eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035* 17.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.035* 18.设置顶边距为2厘米eole.ActiveSheet.PageSetup.TopMargin=2/0.035* 19.设置底边距为4厘米eole.ActiveSheet.PageSetup.BottomMargin=4/0.035* 20.设置左边距为2厘米eole.ActiveSheet.PageSetup.LeftMargin=2/0.035* 21.设置右边距为2厘米eole.ActiveSheet.PageSetup.RightMargin=2/0.035* 22.设置页面水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=.t.* 23.设置页面垂直居中eole.ActiveSheet.PageSetup.CenterVertically=.t.* 24.设置页面纸张大小(1-窄行8?5?11 39-宽行14?11)eole.ActiveSheet.PageSetup.PaperSize=1可为下列 XlPaperSize 常量之一(某些打印机可能不支持所有的这些纸张大小);常量数值意义;xlPaperLetter 1 Letter (8-1/2 in. x 11 in.)xlPaperA3 8 A3 (297 mm x 420 mm)xlPaperA4 9 A4 (210 mm x 297 mm)xlPaperA4Small 10 A4 Small (210 mm x 297 mm)xlPaperA5 11 A5 (148 mm x 210 mm)xlPaperB4 12 B4 (250 mm x 354 mm)xlPaperB5 13 B5 (182 mm x 257 mm)xlPaperFanfoldUS 39 U.S. Standard Fanfold (14-7/8 in. x 11 in.) xlPaperUser 用户自定义* 25.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t.* 26.拷贝整个工作表edRange.Copy* 27.拷贝指定区域eole.ActiveSheet.Range("A1:E2").Copy* 28.粘贴eole.Worksheets("sheet2").Activateeole.ActiveSheet.Range("F1").PasteSpecial* 29.在第2行之前插入一行eole.ActiveSheet.Rows(2).Insert* 30.在第2列之前插入一列eole.ActiveSheet.Columns(2).Insert* 31.设置字体eole.ActiveSheet.Cells(2,1)="黑体"* 32.设置字体大小eole.ActiveSheet.Cells(1,1).Font.Size=25* 33.设置字体为斜体eole.ActiveSheet.Cells(1,1).Font.Italic=.t.* 34.设置整列字体为粗体eole.ActiveSheet.Columns(1).Font.Bold=.t.35.合并单元格,重要!_ole_excel.Worksheets("工作簿名").Range(范围).merge && 范围必须指定起止的单元格,如"A1:B4"eole.ActiveSheet.Range("A1:B4").merge &&合并当前工作表中指定范围36.撤销合并单元格,上述操作的逆操作_ole_excel.Worksheets("工作簿名").Range(范围).unmerge37.在单元格中设置公式(重要,一般可以用来实现计算汇总、求平均等很多功能) _ole_excel.cells(行,列).value = "=公式" && 可以使用所有VBA内部函数,如sum()等。
VFP数据导出到EXCEL技术
VFP数据导出到EXCEL技术数据导出是在不同软件之间交换数据的一项重要任务。
而利用Visual FoxPro(VFP)将数据导出到Excel格式的文件中,是一种常见且有效的技术方法。
本文将介绍VFP数据导出到Excel的技术实现过程。
一、前期准备在进行VFP数据导出到Excel之前,需要确保系统中已经安装了Microsoft Excel软件,并确保VFP与Excel之间的兼容性。
另外,还需要了解VFP中的相关函数和命令,以便能够成功实现数据导出操作。
二、连接Excel文件在VFP中,可以使用OLE DB(Object Linking and Embedding Database)技术来连接Excel文件。
OLE DB可以通过建立连接字符串(Connection String)来访问和操作Excel文件。
下面是一个连接Excel文件的实例代码:```vfplcExcelFile = "C:\Data\Sample.xlsx"lcConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + lcExcelFile + ";Extended Properties=Excel 12.0"lnExcelConnection = SQLSTRINGCONNECT(lcConnectionString)```在以上代码中,使用了ACE OLE DB提供的驱动程序来连接Excel 文件。
lcExcelFile变量存储了Excel文件的路径,lcConnectionString变量存储了连接字符串,lnExcelConnection变量保存了连接对象。
三、导出数据连接上Excel文件后,就可以使用SQL命令从VFP数据库中查询数据,并将查询结果导出到Excel文件中。
下面是一个导出数据的示例代码:```vfplcSql = "SELECT * FROM YourTable"lnResult = SQLEXEC(lnExcelConnection, lcSql, "CursorName")IF lnResult <> -1MESSAGEBOX("数据导出失败!")ENDIF```在以上代码中,lcSql变量存储了需要执行的SQL语句,lnResult变量保存导出数据的返回值。
VFP导出到Excel程序代码
VFP导出到Excel程序代码VFP 导出到Excel 程序代码首先, 我们新建一个表单, 命名为daochu.scx。
在表单上添加一个命令按钮, 并将其Caption 属性设置为“导出”。
运行该表单时, 单击导出, 用户可以选择需要导出的dbf 文件, 成功导出成Excel 文件并保存。
“导出”命令按钮的Click 事件的代码设置[2]为:cDbfFile = GETFILE("dbf")IF EMPTY(cDbfFile)RETURNENDIFUSE (cDbfFile) ALIAS FoxTable IN 0 && 打开所选则的表并定义别名为FoxTableIF NOT USED("FoxT able")=MESSAGEBOX("打开表失败, 程序将中止! ", 16, "Error")RETURNENDIFcExcelFile = PUTFILE("保存为(&N):",JUSTSTEM(cDbfFile)+". xls","xls") && 激活“另存为?”对话框, 设置默认保存文件名。
IF EMPTY(cExcelFile)CLOSE DATABASES ALLRETURNENDIFSELECT FoxTableoExcelSheet = GETOBJECT("","Excel.Sheet") && 产生Excel 对象IF NOT TYPE("oExcelSheet") = "O" && 如果oExcelsheet 不是对象型函数=MESSAGEBOX ("Excel 对象创建失败, 程序将中止! ",16," Error")RETURNENDIFoExcelApp = oExcelSheet.ApplicationoExcelApp.Workbooks.Add() && 添加新工作簿oExcelApp.ActiveWindow.WindowState=2oSheet = oExcelApp.ActiveSheetnFldCount = AFIELDS(aFldList, "FoxTable") &&把当前表的结构信息存放在一个数组中, 并且返回表的字段数。
快速将VFP数据库表输出为EXCEL表
快速将VFP数据库表生成为EXCEL表江西旅游商贸职业学院晏争农摘要:本文介绍了用VFP作为开发语言,将任意VFP数据表快速输出为Excel表的小工具软件程序编制方法,从而实现在Excel中进行表格的编辑。
关键词:VFP EXCEL 事件代码在实际工作中,经常遇到许多办公管理软件所处理的数据是以VFP数据表文件形式存储或打印报表,其格式往往不能满足用户灵活多变的报表需要。
Excel是微软公司办公自动化套件中的一个软件,它以其强大的电子表格功能、友好的界面深受许多用户欢迎。
利用VFP程序快速将任意VFP数据表输出到EXCEL中,以便在EXCEL中进行编辑打印存档,提高工作效率。
此程序可选择任意一个VFP数据库表文件,并可通过待选字段内容,把需要输出的字段选出,输出选择字段的数据至EXCEL中直接进行编辑。
一、在VFP中建立一个新表单(如取名为:转换.scx),在表单上添加如图1所示的各对象控件,设置控件的主要属性如下表:对象属性属性值对象属性属性值Form1 Caption VFP 数据输出至EXCELCommand1Caption输出List1MoverBars .f. Command2 关闭List2 Command3 >Label1Caption 待选字段Command4 >>Label2 选出字段Command5 <Label3选择数据表文件Command6 << 图1二、建立各对象的事件代码:1、待选字段列表框List1.Click事件代码:if thisform.list1.listindex>0mand3.enabled=.t.endif2、选出字段列表框List2.Click事件代码:if thisform.list2.listindex>0mand5.enabled=.t.endif3、确定按钮Command1.Click事件代码:*取得选择的字段if thisform.list2.listcount=0zd='*'elsezd=''for i=1 to thisform.list2.listcountzd=zd+thisform.list2.list(i)+','nextl=len(zd)zd=substr(zd,1,l-1)endiflocal mycursorselect &zd from &fn into cursor mycursor* 将需要输出到Excel表的数据输出exc=createobject("excel.application") && 创建Excle对象exc.workbooks.add &&添加新的工作簿exc.worksheets("sheet1").activate &&设置第一工作表为激活工作表exc.visible=.t. &&显示Excel窗口k =fcount() &&取得字段数for l=1 to kexc.cells(1,l).value=field(l) &&在(1,x)单元格中写入字段名称endfori=reccount() &&取得记录个数for j=1 to igo jfor x=1 to kzhi=field(x)exc.cells(j+1,x).value=&zhi &&在(j+1,x)单元格写入记录值endforendformessagebox( "记录全部输出完毕!",0,'')4、关闭按钮Command2.Click事件代码:close databaseclear eventhisform.release5、“>”按钮Command3.Click事件代码:if thisform.list1.listindex>0thisform.list2.additem(thisform.list1.list(thisform.list1.listindex))thisform.list1.removeitem(thisform.list1.listindex)mand4.enabled=.t.elsethisform.list2.listindex=1this.enabled=.f.mand4.enabled=.f.mand6.enabled=.t.mand5.enabled=.t.endif6、“>>”按钮Command4.Click事件代码:for i=1 to thisform.list1.listcountthisform.list2.additem(thisform.list1.list(1))thisform.list1.removeitem(1)endformand3.enabled=.f.mand4.enabled=.f.mand5.enabled=.t.mand6.enabled=.t.thisform.list2.listindex=17、“<”按钮Command5.Click事件代码:if thisform.list2.listindex>0thisform.list1.additem(thisform.list2.list(thisform.list2.listindex)) thisform.list2.removeitem(thisform.list2.listindex)mand3.enabled=.t.elsethis.enabled=.f.mand6.enabled=.f.mand4.enabled=.t.endif8、“<<”按钮Command6.Click事件代码:for i=1 to thisform.list2.listcountthisform.list1.additem(thisform.list2.list(1))thisform.list2.removeitem(1)endformand3.enabled=.t.mand4.enabled=.t.mand5.enabled=.f.mand6.enabled=.f.9、选择数据表文件组合框Combo1.Click事件代码:public fnfor i=1 to thisform.list1.listcountthisform.list1.removeitem(1)endforfor i=1 to thisform.list2.listcountthisform.list2.removeitem(1)endforfn=getfile('dbf')this.displayvalue=fnuse &fnzds=fcount()for i=1 to zdsthisform.list1.additem(field(i))nextmand3.enabled=.t.mand4.enabled=.t.mand5.enabled=.f.mand6.enabled=.f.thisform.list1.listindex=1三、建立调用表单的主控程序:set talk offset sysmenu offclose databasesystit='江西旅游商贸职业学院'_screen.caption=systitdo form 转换read evenset talk on四、创建项目进行连编生成可执行文件:在VFP中创建一个项目,将建立的表单和主程序添加到项目管理器,如图2所示。
关于VFP输出EXCEL的格式
关于VFP输出EXCEL的格式--------------------------------------------------------------------------------梦醒三分于 00-8-31 17:27:55 发表:关于VFP输出EXCEL的格式以下是我在处理VFP输出EXCEL报表是用的一段程序片段,以供参考。
如有更好的建议,亦请拿出来讨论讨论。
tmpsheet = GETOBJECT('','excel.sheet')if .not. ( type('tmpsheet')='O' ) && U 未能产生EXCEL对象=messagebox( '创建报表失败!' + CHR(13) + CHR(13) + ;'请检查你的系统是否正确安装 EXCEL 软件!' + CHR(13) + CHR(13) + ;'请联络系统管理员' + CHR(13) + ;'', 48, '')returnendifxlapp = tmpsheet.APPLICATIONxlapp.VISIBLE = .f.=messagebox( '准备生成月帐单' + CHR(13) + CHR(13) + ;'日期:' + dtoc(tt_this_day) + CHR(13) + CHR(13) + ;'如有在使用 EXCEL ,请暂时不要使用打印预览功能!!!' + CHR(13) + CHR(13) + ; '报表生成的过程中,请暂时不要使用计算机!!!', 48, '')* wait wind '正在生成'+ form_title +'报表,请稍侯......' nowait***! 创建excel打印对象*****------------------------------------------------------------------------------------xlapp.workbooks.ADD()xlapp.ActiveWindow.WindowState = 2 && 最大化打开的工作本xlsheet = xlapp.activesheetlc_name = allt(file_name_check( &temp_dls2_a..kh_mc )) = lc_name***! 创建excel打印对象*****------------------------------------------------------------------------------------xlsheet.Columns("A:G").Font.Size = 9 && 选择列xlsheet.Columns("A:A").ColumnWidth = 10 && 设置列宽度xlsheet.Columns("B:B").ColumnWidth = 15 && 设置列宽度xlsheet.Columns("C:C").ColumnWidth = 16 && 设置列宽度xlsheet.Columns("D:D").ColumnWidth = 16 && 设置列宽度xlsheet.Columns("E:E").ColumnWidth = 8 && 设置列宽度xlsheet.Columns("F:F").ColumnWidth = 10 && 设置列宽度xlsheet.Columns("G:G").ColumnWidth = 8 && 设置列宽度xlsheet.Columns("A:A").NumberFormatLocal = "@ "xlsheet.Columns("B:B").NumberFormatLocal = "@ "xlsheet.Columns("C:C").NumberFormatLocal = "@ "xlsheet.Columns("D:D").NumberFormatLocal = "@ "xlsheet.Columns("E:E").NumberFormatLocal = "0 "xlsheet.Columns("F:F").NumberFormatLocal = "0.00_ "xlsheet.Columns("G:G").NumberFormatLocal = "@ "xlsheet.Rows("5:5").ShrinkToFit = .t. && 自动收缩为适当尺寸以适应有效列宽xlsheet.Rows("5:5").HorizontalAlignment = 3 && 水平 1左对齐,3居中,4右对齐xlsheet.Rows("1:2").HorizontalAlignment = 3 && 水平 1左对齐,3居中,4右对齐* xlsheet.Columns("G:G").ShrinkToFit = .t. && 自动收缩为适当尺寸以适应有效列宽 ***! 设置页面信息*****------------------------------------------------------------------------------------In_Po = 0.0393700787401575 && 将度量单位从英寸转换为磅基础单位: 0.0393700787401575英寸 -> 0.1磅xlsheet.PageSetup.LeftMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.RightMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.TopMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.BottomMargin = xlapp.Application.InchesToPoints( In_Po * 20 )xlsheet.PageSetup.HeaderMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.FooterMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.Orientation = 1 && 设置打印方向: 1 纵向 2横向xlsheet.PageSetup.PrintTitleRows = "$1:$7" && 设置每页的页头 xlsheet.PageSetup.RightFooter = "第 &P 页,共 &N 页"xlsheet.PageSetup.CenterHorizontally = .t. && 页面水平居中***! 设置页面信息*****------------------------------------------------------------------------------------ ***! 生成打印内容*****------------------------------------------------------------------------------------ xlsheet.Cells( 2,1).VALUE = "帐单时间:" + t_this_yy + '年 '+t_this_mm + '月'xlsheet.Cells( 3,1).VALUE = "客户名称:"+ allt(&temp_dls2_a..khmc)xlsheet.Cells( 4,1).VALUE = "客户帐号:"+ allt(&temp_dls2_a..zh)prn_line = 5xlsheet.Cells( prn_line, 1).VALUE = "主叫号码"xlsheet.Cells( prn_line, 2).VALUE = "被叫号码"xlsheet.Cells( prn_line, 3).VALUE = "开始时间"xlsheet.Cells( prn_line, 4).VALUE = "结束时间"xlsheet.Cells( prn_line, 5).VALUE = "时长"xlsheet.Cells( prn_line, 6).VALUE = "话费(元)"xlsheet.Cells( prn_line, 7).VALUE = "计费标识"lc_min_col = 1lc_max_col = 7for lo_Col = lc_min_col to lc_max_colxlsheet.Cells( prn_line,lo_Col).Borders(4).Weight = 2 &&框线宽度: 2细线 3粗线 endforprn_line = prn_line + 1lc_sum_brhj = 0lc_sum_bybrlj = 0sele &dbf_j_yjd_acount to max_slsum &dbf_j_yjd_a..dj to sum_djgo topscanwait wind '处理'+ lc_name + ' 第'+ str(recno()) + ' 总数:'+str(max_sl) nowaitxlsheet.Cells( prn_line, 1).VALUE = allt(&dbf_j_yjd_a..zjhm)xlsheet.Cells( prn_line, 2).VALUE = allt(&dbf_j_yjd_a..bdhm)xlsheet.Cells( prn_line, 3).VALUE = allt(&dbf_j_yjd_a..riqi)xlsheet.Cells( prn_line, 4).VALUE = allt(&dbf_j_yjd_a..riqi2)xlsheet.Cells( prn_line, 5).VALUE = &dbf_j_yjd_a..fzxlsheet.Cells( prn_line, 6).VALUE = &dbf_j_yjd_a..djxlsheet.Cells( prn_line, 7).VALUE = allt(&dbf_j_yjd_a..jfbs)prn_line = prn_line + 1endscanfor lo_Col = lc_min_col to lc_max_colxlsheet.Cells( prn_line,lo_Col).Borders(3).Weight = 2 &&框线宽度: 2细线 3粗线 endforxlsheet.Range("A1:G1").MergeCells = .t. && 合并单元格xlsheet.Range("A2:G2").MergeCells = .t. && 合并单元格xlsheet.Range("A3:G3").MergeCells = .t. && 合并单元格xlsheet.Range("A4:G4").MergeCells = .t. && 合并单元格xlsheet.Range("A5:G5").MergeCells = .t. && 合并单元格xlsheet.Rows("1:1").Font.Size = 11 && 选择行xlsheet.Rows("1:1").Font.Bold = .t.xlsheet.Rows("1:2").RowHeight = 18.00 && 设置行宽度xlsheet.Rows("4:4").HorizontalAlignment = 4 && 水平 1左对齐,3居中,4右对齐xlsheet.Rows("5:5").HorizontalAlignment = 1 && 水平 1左对齐,3居中,4右对齐*! 完成删除提示按扭*****------------------------------------------------------------------------------------ file_name = all_path + lc_name + '.xls'if file( file_name) = .t.??chr(7)result=messagebox( file_name +'已存在,要替换该文件吗? ', 4+48+256, '' )if result=6ERASE &file_namexlapp.activeWorkbook.SaveAs( file_name ) endifelsexlapp.activeWorkbook.SaveAs( file_name )endifxlapp.activeWorkbook.close(.f.)endifendscanxlapp = tmpsheet.APPLICATIONxlapp.activeWorkbook.close(.f.)xlapp.quit=messagebox( '已完成报表输出!', 48, '')return。
VFP数据导出到EXCEL技术
VFP数据导出到EXCEL技术 我们都知道在 EXCEL 中有很多很多的计算公式、灵活多变的计算方式、方便快捷的图表处理、和功能强大的 VBA 语言,可以说 EXCEL 可能是最好用的表格处理软件。
我敢说:微软的产品中大概就 EXCEL 最好! 但是,怎样用 Foxpro 快速产生统计表,并将数据送到 Excel表格中,从而代替 Foxpro 的报表工具呢? 我们大家都知道,在 Visual Foxpro 3.0及以后版本中提供了一个调用Ole Automation 的函数 CREATEOBJECT,用该函数可以让 Visual Foxpro 很方便的和其它可以提供 Ole Automation 服务的程序进行通讯。
而 Excel 更是一个标准的 Ole Automation 服务器程序,我们可以在前端将数据传送到后端的Excel 服务程序,用后端服务程序进行表格处理,从而弥补 Visual Foxpro的不足。
由于历史原因,我们作报表都习惯用 Total、Count、Sum 或者直接在报表中工具中计算,速度最快的大概也就是 Total 了,但不知道还有多少人还在坚持使用 Total 命令进行计算,有没有更好的计算方法呢?当然有啦!我在实际使用中积累有一定的经验但愿能给各位起到小小的启发。
假设有一表:Table1 是一个人员档案,里面的表结构如下:-----字段名--类型及长度--------- 编号 C,2 部门 C,10 姓名 C,10 性别 C,2 出生日期 D 职务 C,10 文化程度 C,10内容大概如下TABLE1.DBF---------------------------------编号 部门 姓名 性别 出生日期 职务 文化程度 --------------------------------- 1 工程部 张三 男 1971-01-11 工程师 大学本科 2 销售部 李四 男 1967-02-23 经理 大学本科 3 工程部 王武 1954-03-14 技术员 大学专科 4 总经理室 赵洁雅 女 1975-04-05 秘书 硕士研究生 5 销售部 .. 1977-05-09 销售经理 高中 6 工程部 大文 1969-03-30 总工程师 大学专科 7 销售部 .. 1961-10-10 销售经理 大学专科 8 总经理室 庄稼 1961-10-10 总经理 大学专科 当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。
FoxPro表导出为Excel工作表操作程序
8、在所存储的位置找到自己到处的Excel工作表。
FoxPro建学籍表操作程序:
1、打开VF点击下拉菜单“文件”里的新建;
2、选择选项中的“表”,点击与偶侧空白“新建文件”;
3、选择输入表头名称,点击确定;
4、在字段名中输入表中分栏各项的名称;
5、确定表中分栏各项所需的类型(如:字符型、日期型、货币性等);根据输入内容确定数值宽度;
6、在输入数据记录中确定“是”;而后通过下拉菜单中的“显示”栏以“浏览”界面输入学生各类信息(自动完成保存);
7、在C盘的ProgramFiles中找绿色软件并打开,并找准输入的学籍内容发到桌面,而后在VF中导出Excel格式的学籍内容。
FoxPro表导出为Ex“文件”里的导出键;
3、在提示的对话框中的“类型”中选择MicrosoftExcel2.0、3.0and4.0(EXL);
4、点击带有“…”图标选择导出文件存储的位置;
5、编辑“导出”选项中所要导出文件的名称;
6、点击保存;
用vf语言导excel的属性语句
方法一:Use**.dbfCopy To Excel333.Xls Type Xl5方法二:local myfieldyfilename=getfile("**.dbf")&&得到源表myoleapp=createobject("excel.application") &&创建OLE对象myoleapp.visible=.t.myoleapp.workbooks.adduse 1.dbf &&myfilenamefor i=1 to fcount()myoleapp.cells(1,i).value=field(i)endforscanfor i=1 to fcount()myfield=fields(i)myoleapp.cells(recno()+1,i).value=&myfieldendforendscanmyoleapp.quit还有没有其他的方法!--------------------------------------------------------------------------------1、_CLIPTEXT=''SELECT bh,xm FROM h:\gzkd\jzg INTO CURSOR ddSELECT ddCOPY TO dd1.txt sdf_CLIPTEXT =FILETOSTR('dd1.txt')2、SELECT qq,bh,xmold,dwold,xfgzold,zfgzold,bfold,xm,dw,xfgz,zfgz,bf FROM r:\temp\qwe INTO CURSOR dd_vfp.DataToClip('dd',,3)ZX = CREATEOBJECT('excel.application',' ')zx.ActiveSheet.Paste--------------------------------------------------------------------------------3Set oConnection = CreateObject("adodb.connection")Set dd = CreateObject("adodb.recordset")With oConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ThisWorkbook.FullName + ";Extended Properties='excel 8.0;HDR=YES;IMEX=1';Persist Security Info=False".OpenEnd Withdd.Open "select trim(订单号) as 订单号,count(*) as gs from [sheet1$] group by trim(订单号)", oConnection"select * from (select trim(订单号) as 订单号,count(*) as gs from [sheet1$] group by trim(订单号)) where gs=1", oConnectionSheets.AddSheets(1).Range("a1").CopyFromRecordset dd--------------------------------------------------------------------------------上述代码是VB的,略加修改即可在VFP下运行--------------------------------------------------------------------------------一般只用第1种方法(这是VFP的特长,其他开发工具没有VFP方便,都应该用方法2)--------------------------------------------------------------------------------VFP与EXCEL的几种交互编程方法一、EXECL驱动VFPEXECL内置的VBA语言(Visual Basic For Application)为EXECL功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OleApp=CREATEOBJECT("Excel.Application")
WITH OleApp
.DisplayAlerts=.F.
.Application.WorkBooks.Open(SYS(2023)+"\TMP.DBF")
edRange.Select
IF EMPTY(m.lsWJM)
RETURN
ENDIF
IF !FILE("模板文件.XLS")
=MessageBox("请先创建Excel模板文件!",64,"宇星工作室")
RETURN
ENDIF
USE 数据表
COPY TO SYS(2023)+"\TMP.DBF" FIELDS FieldList FOX2X &&选择所需要的字段
m.lsWJM=PUTFILE("文件名:","未命名.XLS","XLS")
IF EMPTY(m.lsWJM)
RETURN
ENDIF
USE 数据表
COPY TO SYS(2023)+"\TMP.DBF" FOX2X
USE
OleApp=CREATEOBJECT("Excel.Application")
.Rows(m.H).Select
.Selection.Delete
ELSE
.Selection.PasteSpecial()
.Selection.Columns.AutoFit
ENDIF
.Range("A1").Select
.Selection.Copy
.Application.WorkBooks.Open(SYS(5)+SYS(2003)+"\模板文件.XLS") && 模板文件需要路径
.Range("A1").Select
m.YXGZS=.Cells.Find("开始记录",.ActiveCell,-4123)
.ActiveWindow.Close
DELETE FILE SYS(2023)+"\TMP.*"
.ActiveWorkbook.SaveAs(m.lsWJM)
.Application.Visible=.T.
.DisplayAlerts=.T.
VFP导出到EXCEL文件的另类方法
VFP导出到excel文件的另类方法 论坛中在讨论vfp导出到EXCEL文件的方法,其中的方法以前都有试过,或多或少都有些不近人意的地方,比如字符形数字变成了数字,身份证号码居然是科学计数显示
几年来一直用这样的方法处理,请大家点评
LOCAL lsWJM,OleApp
IF VARTYPE(m.YXGZS)="O"
m.YXGZS.Activate
Release YXGZS
m.H=.ActiveCell.Row
.Selection.PasteSpecial(-4163,-4142,.F.,.F.) &&仅粘贴数值
WITH OleApp
.DisplayAlerts=.F.
.Application.WorkBooks.Open(SYS(2023)+"\TMP.DBF")
edRange.Select
.Selection.Copy
.Workbooks.Add
_CLIPTEXT=""
.Application.Windows("TMP.DBF").Activate
.ActiveWindow.Close
DELETE FILE SYS(2023)+"\TMP.*"
.ActiveWorkbook.SaveAs(m.lsWJM)
.Range("A1").Select
.Selection.PasteSpecial()
.Selection.Columns.AutoFit
.Range("A1").Select
_CLipTEXT=""
.Application.Windows("TMP.DBF").Activate
.Application.Visible=.T.
.DisplayAlerts=.T.
ENDWITH
RELEASE OleApp
OleApp = Null
END
OleApp = Null
如果你是固定的数据,可以将EXCEL文件做成模板,设置纸张大小、页边距、字体字号、标题、表头等,然后在需要导入数据的单元格中输入"开始记录"(不要输入引号)
LOCAL lsWJM,OleApp,YXGZS,H
m.lsWJM=PUTFILE("文件名:","未命名.XLS","XLS")