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输出EXCEL的格式
关于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").ShrinkT oFit = .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.InchesT oPoints( In_Po * 10 )xlsheet.PageSetup.RightMargin = xlapp.Application.InchesT oPoints( In_Po * 10 )xlsheet.PageSetup.TopMargin = xlapp.Application.InchesT oPoints( In_Po * 10 )xlsheet.PageSetup.BottomMargin = xlapp.Application.Inche sToPoints( In_Po * 20 )xlsheet.PageSetup.HeaderMargin = xlapp.Application.Inche sToPoints( In_Po * 10 )xlsheet.PageSetup.FooterMargin = xlapp.Application.Inches ToPoints( 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中导出数据的几种方法
从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技术我们都知道在 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实验6 数据的导入和导出-先删除v100中的工资表
实验6 数据的导入和导出
实验目的:
第一,将一个表中的数据导入到另一个表中,导入的数据是对应相同的字段。
第二,VFP 表和EXCEL 表之间的导入和导出。
实验步骤:
第一,VFP 表的数据导入到VFP 表:
1.启动vfp6.0,打开d:\v100\工资管理项目;
2.数据→数据库→职工管理库→表→新建,新建表,表名为工资表,表的字
导入到这个工资表来。
3.表→工资表→浏览→选择菜单的“表”→追加记录,如下图:
单击在“来源于”后面的按钮,找到职工表,接着在该对话框中单击“选项”,选择职工号和姓名两个字段,确定。
4.补充工资表的基本工资、奖金和水电费的数据如下:
第二,导出(VFP 表数据导出到EXCEL 表):
1.启动EXCEL ,新建一个EXECL 文件,不输入数据,直接保存到d:\v100中,该EXCEL 文件名字为新工资表,退出EXCEL 。
2.启动vfp6.0,打开d:\v100\工资管理项目→数据→数据库→职工管理库→表→工资表→浏览,在命令窗口输入如下命令回车:
copy to d:\v100\新成绩表type XL5
即可将工资表中的所有数据导出到EXCEL文件“新工资表中”。
从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程序设计与分析
周爱民;彭剑;刘艳松
【期刊名称】《电脑知识与技术》
【年(卷),期】2007(001)001
【摘要】VFP是一种关系型数据库管理系统,具有强大的数据处理能力和界面开发能力,是一个数据库应用程序开发的好工具,Excel是一个优秀的电子表格软件,备受广大办公人员的青睐.将两者结合起来,能利用各自的优点,取长补短.本文对用VFP 开发软件时如何导入导出Excel工作表进行了程序设计与分析.
【总页数】2页(P176,189)
【作者】周爱民;彭剑;刘艳松
【作者单位】湖南中医药高等专科学校,湖南株洲 412012;湖南中医药高等专科学校,湖南株洲 412012;湖南中医药高等专科学校,湖南株洲 412012
【正文语种】中文
【中图分类】TP311
【相关文献】
1.VFP应用程序和Excel间的数据传送技术 [J], 骆力
2.浅析在VFP程序中利用Excel实现报表打印功能 [J], 上官圣洁
3.在LabVIEW中导入导出Excel文件程序设计 [J], 王卫华
4.研制在Excel工作表中保护考生注册信息的VFP实用程序 [J], 赵龙强
5.用VFP程序控制EXCEL的设置 [J], 解二虎
因版权原因,仅展示原文概要,查看原文内容请购买。
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") &&把当前表的结构信息存放在一个数组中, 并且返回表的字段数。
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)格式。
当鼠标点选的单元格在数据区域外进行保存时,会出现以下提示框:当点选了数据区域内的单元格后再进行保存操作就可以了。
快速将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技术 我们都知道在 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、点击保存;
VFP应用程序和Excel间的数据传送技术
VFP应用程序和Excel间的数据传送技术
骆力
【期刊名称】《沈阳化工大学学报》
【年(卷),期】2002(016)004
【摘要】Excel电子表格具有灵活多变的计算公式和方便快捷的图表处理能
力,Visual FoxPro在界面操作、数据输入、数据输出和数据管理方面有独特的优势.本文介绍用OLE技术将Visual FoxPro产生的统计表数据送到Excel表格中,生成Excel的报表,从而实现充分利用二者优势的目的,并给出一个应用示例.
【总页数】4页(P311-314)
【作者】骆力
【作者单位】安徽工业大学,安徽,马鞍山,243002
【正文语种】中文
【中图分类】TP311
【相关文献】
1.关于EXCEL与VFP间数据共享方式的研究 [J], 芮瑞
2.Word与Excel应用程序间的数据共享 [J], 耿冬茹
3.异地VFP应用程序数据传送 [J], 吴晓晖
4.Excel数据向VFP数据库格式的安全转换 [J], 刘昌勇
5.信息技术调研数据Excel文件与远程VFP数据库在低网络开销环境下的相互调用 [J], 郭占龙;王永生;肖中杰
因版权原因,仅展示原文概要,查看原文内容请购买。
Foxpro转Excel,dbf转Excel
Foxpro转Excel,dbf转Excel3/visual foxpro怎么导出大数据到Excelhttps:///q/1448348134723977写什么样的命令可以让我把上百万的DBF导出成好多个Excel,copy to xxx XL5 next63544?BBS:你的方法可行,其他也没啥好办法.参考代码如下:select 表名ncount=reccoount()nindex=1 &&这是给生成的excel文件命令的序号for i=1 to ncount step 65534cfilename='aaa'+padl(alltrim(str(nindex)),8,'0')+'.xls' &&这里生成目标文件名,自己可以根据需要更改go record icopy to &cfilename. type xl5 next 65534endfor2/如何实现Foxpro和Excel数据间相互转换https:///q/1482092557725882https:///q/1366412570061734FOXPRO/文件/导出成XLS5,命令:copy to .XLS type XL5COPY TO 文件名.xls TYPE XL5EXCEL中可以用“文件”——“另存为。
”DBF4格式,但是只有EXCEL2003有这种功能,OFFICe2007及以上版本不再支持此功能了。
实际上两者可以通过TXt文件进行。
1/FoxPro表导出为Excel工作表操作程序,付费?https:///view/fbdd4d4d763231126edb115 d.html。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 总经理大学专科当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。
我不知道你们在使用SQL语句时有没有用使用函数的习惯,反正我是相当愿意在SQL 中使用函数,我认为使用函数的SQL 语句虽然语句长一点,但是可以让你的程序看起来更清晰、简洁。
说道这里我要感谢当初发明出IIF 函数那位高人,要没有他(她)我也没有机会在这里罗嗦这么久,在后面提到的快速产生统计表中将大量的运用IIF 函数。
也许你会觉得奇怪,你统计的时候用那么多IIF 干吗?别急,下面就让我慢慢的告诉你。
看看我们前面描述的表,我们可能要统计各个部门的“性别|职务|文化程度”等的分布情况,简单一点我给画了一个表个出来,可能表格更能说明白:各部门人员分布情况表单位:人---------------------------------部门|男|女|本科|专科|技术人员|管理人员|秘书---------------------------------工程部|||||||销售部|||||||总经理室|||||||||||||||||||||---------------------------------上面这张表说复杂也不复杂,但是用常给的处理方法可能也要耗掉我们不少的时间,因为你不得不针对不同的项目进行单独反复的计算,可能还要生成一大堆的临时表真烦!下面的计算公司可让你轻松完成上面的表格,当然程序还是要写的不可能什么也不动不想就能达到的,立即输入下列程序:第一步:转换Select 部门,;iif(性别='男',1,0) as 男,;iif(性别='女',1,0) as 女,;iif(文化程度='大学本科',1,0) as 大学本科,;iif(文化程度='大学专科',1,0) as 大学专科,;iif(inlist(职务,'工程师','技术员','总工程师'),1,0) as 技术人员,; iif(inlist(职务,'总经理','经理','销售经理'),1,0) as 管理人员,; iif(inlist(职务,'总经理','经理','销售经理'),1,0) as 管理人员,; iif(inlist(职务,'秘书'),1,0) as 秘书;from table into cursor query1第二步:转换并计算Select 部门as 部门,;sum(男) as 男,;sum(女) as 女,;sum(大学本科) as 大学本科,;sum(大学专科) as 大学专科,;sum(技术人员) as 技术人员,;sum(管理人员) as 管理人员,;sum(管理人员) as 管理人员,;sum(秘书) as 秘书;from query1 into cursor query1;group by 部门不要以为我把“from query1 into cursor query1”写错了,这样写的语句确实可以使用。
到这一步,统计表就计算出来了,不信用BROWSE 看看。
往下面我们应该说说怎样把现在统计出的数据输出到EXCEL 中了(当然什么样子的数据都可以)。
首先用CreateObject 函数建立一个Excel automation 对象,程序如下:local excel,odefine windows WaitWin at 0,0 size 10,60 system ;font 'times new roman',12 ;title '提示' close float zoom &&用于处理提示信息的窗口move windows waitWin centeracti windows waitwinset color to w+/nclearexcel=createobject('excel.application')if type('excel')='U' &&未能产生EXCEL对象'启动EXCEL 失败...'release windows WaitWinreturnendifReportTitle='XXXX公司人员分布情况'ExcelFile="xls1.xls"excel.caption=ReportTitelselect query1if not file(ExcelFile)export to (ExcelFile) type xlsendifexcel.workbooks.open(ExcelFile)o=excel.activeworkbook.activesheet &&用对象代替这么长的一串字o.cells(1,1).value=ReportTitle** 第一行是标题,故从第二行开始scan for recno()>1 &&每一行'正在将数据转换到Excel 表格中...',recno()for i=1 to fcount() &&每一列fld=field(i)if type(fld)='C'&&如果字段太宽,Excel可能不能正确接受数据o.cells(recno()+3,i).value=trim(&fld)elseo.cells(recno()+3,i).value=&fldendifendforendscano.cells(1,1).selectexcel.ActiveWindow.windowstate=2excel.ActiveWorkbook.save()excel.visible=.t.clearstartTime=time()set cursor off** 等待Excel 处理完毕后再继续*do while .t.@1,4 say '已启动后台Excel 表格处理程序,处理中...'@2,4 say 'Ctrl+End 继续处理...'@4,4 say '开始时间:'starttime@5,4 say '现在时间:'time()&&VFP会在此等待,除非你从EXCEL中退出或按下Ctrl+End键if inkey(0.5)=23 or type('')='U'exitendifenddoset cursor onrelease o,excelrelease FindWindow'处理完毕...'=inkey(0.5)release windows WaitWinend noteVFP调用EXCEL的补充方法佳帆网站工作室大文下面是我使用VFP CALL EXCEL的部分例子:这是本人从书本上抄的片断和我的小小经验,可以让你很方便的在VFP 中调用EXCEL,所有的例程我都试验过。
用Visual Foxpro 设计用Excel表格的程序利用OLE Automation 设计Excel 应用程序Excel支持的对象说明:(a) VBA 对象:对象名称意义Application Excel应用程序对象WorkBooks Excel活页薄对象(b)所使用的Method对象名称Method 执行意义Application Cells 设定或传回来某个网格的内容Range 传回或设定某一个范围的网格Charts 传回或设定活页簿的单一统计表Quit 结束Excel ApplicationSave 激活存储文件对话框WorkBooks Add 新增一个工作簿Charts Add 新增一个统计图(c)所使用的Property对象名称Property 设定意义Application Visible 是否现实再SCREEN上.T. , .F. Value 传回或者设定存储文件的内容ActiveSheet 回应Excel Application 执行工作表对象实例说明:启动Excel:MyExcel=CreateObject('Excel.Application') &&建立Excel对象MyExcel.Visible=.T. &&让Excel对象再屏幕上显示出来如何增加工作簿:MyExcel.WorkBooks.Add &&在Excel对象中增加一份工作簿(WorkBook) 如何在工作簿中增加Sheet(工作表)MyExcel.Sheets.Add &&增加工作表(在当前工作簿中)如何删除工作表MyExcel.ActiveWorkBooks.Sheets(1).Delete &&把工作簿中的BOOK(1)删除向指定的工作簿中的工作表(Sheet)中存储数据*Excel.application Object*Excel.application.ActiveWorkBook Property*WorkBOoks Object*WorkBOoks Object的Add Method.*Sheets对象*Sheets(Index)对象指定索引工作表*Excel.Application对象的Cells Method结合Value属性Example:CLEAR ALLSET PATH TO SYS(2004)+'SAMPLESDATE'USE CUSTOMERMYEXCEL=CREATEOBJEXT('EXCEL.APPLICATION') MYEXCEL.VISIBLE=.T.MYEXCEL.WORKBOOKS.ADDMYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).V ALUE='客户编号'MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,2).V ALUE='公司行号' SELECT CUSTOMERR=2C=1GOTO TOPFOR I=1 TO 20MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C). V ALUE=CUSTOMER.CUST_IDMYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C+ 1).V ALUE=PANY R=R+1SKIPENDFOR调整单元格宽度:MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).columnwidth=30调整单元格对齐方式:MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).h orizontalalig=1 1为默认方式,2为左对齐,3为中对齐,4为右对齐。