VFP数据导出到EXCEL技术.

合集下载

VFP导入导出Excel程序设计与分析

VFP导入导出Excel程序设计与分析
Ab ta t P i akn f ea o y ed t b s ng me tss m, a es n a a dig cp ct n nefc e eo me ta it sr c: s ido l ntp a aema a e n t VF r t i a y e h v  ̄o gd t h n l a a i a di i y

表格处理软件 , 在兼 容性 、 操作界 面 、 式运算 、 公 图表 等方面有着 独到的优势 , 成为广大办公应用 人员必备 的首选 软件 。上述两种
软 件 在 各 自的 应 用 领 域 均 得 到 了 广 泛 的 应 用 . 时 上 述 两 种 软 件 同 还 具 有 良好 的 交 互 编 程 能 力 。 两 者 相 辅 相 成 、 长 补 短 奠 定 了 为 取 良好 的 基础 但 是 , 于大 多 数 非 专 业 人 士来 说 , 全 面 掌 握 好 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中导出数据的几种方法出处:网络当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技术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中的工资表

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文件“新工资表中”。

Foxpro转Excel,dbf转Excel

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。

从VFP中导出数据的几种方法

从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报表巧让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

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()等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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).VALUE='客户编号' MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,2).VALUE='公司行号' SELECT CUSTOMERR=2C=1GOTO TOPFOR I=1 TO 20MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C).VALUE=CUSTOMER.CUST_ID MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C+1).VALUE=PANY R=R+1SKIPENDFOR调整单元格宽度:MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).columnwidth=30调整单元格对齐方式:MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).horizontalalig=11为默认方式,2为左对齐,3为中对齐,4为右对齐。

相关文档
最新文档