VFP和Excel都可以用来进行处理数据库表格
- 格式:docx
- 大小:46.24 KB
- 文档页数:29
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 总经理大学专科当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。
从Excel表转移数据到VFP表的编程实现方法高进龙,崔尚森,王文林(长安大学,陕西西安710054)摘要:把整个一个Excel表数据转换为VFP表并不难,难就难在把Excel表中某些行某些列的数据转移到已有数据的某个VFP表中,而且可能还会遇到两表间相应数据列的名称、数据类型、排列顺序不同的问题。
作者用VFP编程,轻松实现了这一数据转移工作。
本文将就这一程序的设计思想和实现方法做简要介绍。
关键词:Excel表,VFP表,转移数据,编程实现作者简介:高进龙(1964-),男,陕西华阴市人,长安大学地测学院教务办公室主任,讲师。
一、问题的提出VFP(Visual Foxpro)是一种关系型数据库管理系统,其强大的数据处理能力及其面向对象的编程能力,使其得到数据库应用程序开发人员的广泛使用。
而Excel则是一个优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表表现等方面有着独到的优势,成为广大办公应用人员常用的工具。
因为两种软件各有短长,所以在实际应用中常会遇到两者之间数据的转移问题。
把整个VFP表转换为Excel表或者把整个Excel表转换为VFP表的工作,两种软件都提供了相应的转换功能,一般用户很容易操作。
但是把Excel表中部分数据转移到已存在的VFP表中的情况就要复杂得多。
两种表的数据转移可能存在以下三个方面的问题:一是Excel表中可能存在某些行的数据不需要或不能被转移,需要转移或者可以转移的仅是其中较规范的某些行;二是Excel表并非所有列的数据,而只是某些列的数据需要被转移到VFP表的相应数据列中,两表中相应列的名称和顺序可能不一致;三是Excel表中与VFP表对应数据列的数据类型可能不一致。
因此,对业已存在的这两类数据表间数据转移工作,用手工完成非常麻烦和费时。
在工作实践中,作者运用VFP编程驱动Excel的能力,设计完成了从Excel到VFP的数据转移程序,成功地解决了这一问题。
Vfp中,可使⽤界⾯⽅式操作表,也可使⽤命令⽅式操作表。
⽐较复杂的操作⼀般只能通过命令来进⾏。
⼀.修改表结构: ⽅式⼀:打开“数据库设计器”,右击表,在快捷菜单中选“修改表”命令, ⽅式⼆:在项⽬管理器中选中“职⼯档案”表,单击右侧的“修改”按钮, ⽅式三:使⽤命令 (1).使⽤use命令打开表:use 职⼯档案 (2).再使⽤下⾯命令修改表结构:modify structure ⼆.打开表:use命令 格式:use [数据库名!]表名 说明:(1).“[]”中的内容为可选项,就是说,在打开数据库表时,可以加上“数据库名!”作前缀,也可以不加前缀。
(2).打开的表⽂件如不在默认⽬录中,应指定⽂件路径。
如没有指定默认⽬录,可输⼊“set default to 路径”命令来指定默认⽬录。
例:打开默认⽬录中的“职⼯档案.dbf\" 在命令窗⼝输⼊下⾯命令,再回车即可: use 职⼯档案 三.关闭表:直接输⼊use回车,不加表名,可关闭当前打开的表。
四.向表中追加新记录: 格式:append [blank] 说明:(1).选blank选项,执⾏该命令后,直接在表末尾添加⼀条空⽩记录,界⾯没有发⽣变化,可在以后使⽤replace等命令修改它。
(2).不选blank选项,则弹出编辑窗⼝,以交互窗⼝⽅式输⼊记录。
五.浏览表记录: 命令格式:Browse [Fields 字段名表] [For 条件] 功能:以Browse窗⼝形式显⽰记录。
说明:(1).[Fields 字段名表]:指定浏览窗⼝中出现的字段名表,字段名之间⽤逗号分隔。
(2).[For 条件]:指定浏览窗⼝中出现的记录条件。
例:在命令窗⼝依次执⾏下列命令: use ry!职⼯档案 browse fields 编号,姓名,⼯资 use 六.显⽰表记录: 格式1:list [字段名表][范围][For 条件] 格式2:display [字段名表][范围][For 条件] 功能:在Vfp的主窗⼝屏幕上显⽰指定记录。
vfp ole原理
VFP(Visual FoxPro)是一种基于对象的编程语言和集成开发环境,用于创建数据库应用程序和解决方案。
OLE(Object Linking and Embedding)是一种技术,用于在Windows环境中实现对象的链接和嵌入。
VFP中的OLE原理指的是VFP如何利用OLE技术与其他
应用程序进行交互和集成。
首先,VFP可以作为客户端应用程序使用OLE自动化来与其他
支持OLE的应用程序进行通信。
这意味着VFP可以创建、操纵和控制其他应用程序的对象,比如Microsoft Office套件中的Word、Excel等。
通过OLE自动化,VFP可以实现与这些应用程序的数据交换和功能调用,从而实现整合和扩展。
其次,VFP本身也可以作为服务器应用程序,通过OLE公开自
己的对象模型供其他应用程序调用。
这意味着其他应用程序可以通过OLE技术访问VFP中的对象和方法,实现与VFP的集成和交互。
这种方式可以让其他应用程序利用VFP的功能和数据处理能力,从而扩展自身的功能和实现更复杂的业务逻辑。
此外,VFP还可以通过OLE嵌入技术将其他应用程序的对象嵌
入到VFP的窗体或报表中,实现在VFP应用程序中展示和操作其他
应用程序的内容。
这种方式可以实现数据可视化、报表生成等功能,增强了VFP应用程序的表现和功能。
总的来说,VFP中的OLE原理涉及了VFP与其他应用程序之间
的通信、集成和交互,通过OLE技术实现了不同应用程序之间的协
同工作和功能整合。
这种原理的应用使得VFP成为一个强大的开发
工具,能够满足复杂的业务需求并与其他应用程序无缝集成。
vfp数据库基础考试题及答案一、单项选择题(每题2分,共20分)1. Visual FoxPro中,用于创建数据库的命令是()。
A. CREATE TABLEB. CREATE DATABASEC. USED. SET DATABASE2. 在VFP中,要查看当前数据库中所有表的名称,可以使用()命令。
A. LIST TABLESB. SHOW TABLESC. DISPLAY TABLESD. DESCRIBE TABLES3. 以下哪个选项不是VFP支持的数据类型()。
A. NumericB. DateC. TimeD. Image4. 在VFP中,要将一个自由表添加到数据库中,应使用()命令。
A. ADD TABLEB. APPEND TABLEC. INSERT TABLED. MODIFY TABLE5. Visual FoxPro中,用于删除数据库中一个表的命令是()。
A. DROP TABLEB. REMOVE TABLEC. DELETE TABLED. ERASE TABLE6. 在VFP中,要设置当前工作区为第2个工作区,可以使用()命令。
A. SELECT 2B. USE 2C. SET WORKAREA 2D. WORKAREA 27. Visual FoxPro中,用于查看当前表结构的命令是()。
A. DESCRIBEB. DISPLAY STRUCTUREC. SHOW STRUCTURED. EXAMINE8. 在VFP中,要将表中的数据导出为文本文件,可以使用()命令。
A. EXPORTB. OUTPUTC. EXPORT TOD. OUTPUT TO9. Visual FoxPro中,用于计算表中所有记录的数值字段总和的函数是()。
A. SUMA. AVGC. COUNTD. TOTAL10. 在VFP中,要设置表的索引,可以使用()命令。
A. SET INDEXB. CREATE INDEXC. INDEX OND. INDEX TO二、填空题(每空1分,共10分)1. 在VFP中,使用____命令可以打开一个已存在的数据库。
visual foxpro 格式的dbfVisual FoxPro(VFP)是一种数据库管理系统,而DBF是VFP所使用的数据库文件格式。
使用VFP,用户可以创建、修改和查询DBF文件中的数据。
如果你想在VFP中打开或编辑DBF文件,你可以按照以下步骤操作:1.打开Visual FoxPro软件。
2.在菜单栏中点击“文件”选择“打开”选项。
3.在打开的窗口中,找到你的DBF文件存放位置,选择该文件,然后点击“打开”。
4.在VFP中,你可以查看、编辑和修改DBF文件中的数据。
5.当你完成对DBF文件的操作后,你可以选择“文件”菜单中的“关闭”选项来关闭文件。
另外,如果你想要在其他软件中打开DBF文件,你可能需要使用一种支持DBF格式的数据库软件或转换工具,如dBASE或DBF Viewer Plus等。
当然可以。
以下是更多关于DBF文件的操作步骤:1.打开文件:首先,你需要在Visual FoxPro中打开DBF文件。
你可以通过选择“文件”菜单,然后选择“打开”,之后在文件类型中选择“DBF Files (*.dbf)”,并找到你想要打开的DBF文件。
2.查看和编辑数据:一旦文件被打开,你就可以在VFP的表浏览器中查看数据。
你也可以使用各种工具和选项来编辑数据,如添加、删除或修改记录。
3.创建新的DBF文件:如果你想创建一个新的DBF文件,你可以选择“文件”菜单中的“新建”选项,然后选择“表”来创建一个新的DBF文件。
在创建过程中,你可以设置字段名、数据类型等属性。
4.导入和导出数据:VFP提供了强大的数据导入和导出功能。
你可以将DBF文件与其他格式的文件(如Excel、CSV等)进行转换。
5.创建查询和报告:VFP允许你创建复杂的查询来检索DBF文件中的数据,并生成报告。
6.设置索引和关系:为了提高数据检索的速度,你可以为DBF文件中的字段创建索引。
此外,VFP 还支持设置表之间的关系,以实现数据的参照完整性。
vfp中表单的名词解释在Visual FoxPro (VFP)中,表单是一种常见的界面元素,用于显示和收集用户输入的数据。
它是开发Windows桌面应用程序的重要组成部分,可以进行数据录入、数据查询和报表生成等操作。
在本文中,我们将对VFP中表单的各个方面进行名词解释,以帮助读者更好地理解和使用这个工具。
1. 表单(Form)表单是VFP中用于将数据展示给用户的主要界面元素。
它由各种控件组成,比如文本框、按钮、下拉列表等,用于接收用户输入并将其保存到数据库中。
一个表单可以包含多个页面,以便组织复杂的数据输入和展示。
2. 控件(Controls)在VFP中,各种用于界面交互和数据输入的元素被称为控件。
常见的控件包括文本框、按钮、下拉列表、复选框等。
它们可以通过鼠标或键盘进行操作,并与数据库或其他业务逻辑进行交互。
3. 数据绑定(Data Binding)数据绑定是将表单中的控件与数据库字段或变量进行关联的过程。
通过数据绑定,当用户输入数据或修改控件的值时,表单会自动更新相关的数据库字段或变量。
这种机制简化了数据处理的步骤,减少了编写重复代码的工作。
4. 表单设计工具(Form Designer)VFP提供了一套强大的表单设计工具,用于创建和编辑表单界面。
通过拖放、调整大小和设置属性,开发人员可以自由地设计和布局表单。
表单设计工具还提供了预览功能,使开发人员能够在设计过程中即时查看表单的外观和交互效果。
5. 数据验证(Data Validation)在用户输入数据时,表单可以对数据进行验证,以确保其符合特定的规则和约束。
例如,可以验证用户输入的邮箱地址是否符合邮箱格式,或者检查输入的年龄是否在合理范围内。
数据验证可以通过设置控件的属性或编写自定义验证代码来实现。
6. 数据展示(Data Presentation)表单不仅可以用于数据输入,还可以用于数据展示。
通过数据绑定和查询操作,开发人员可以在表单中显示数据库中的数据,从而实现数据查询和导航的功能。
vfp在学籍管理中的应用VFP(Visual FoxPro)是一种用于数据库管理和应用开发的编程语言和环境。
在学籍管理中,VFP可以发挥重要作用,帮助学校或教育机构高效地管理学生的学籍信息。
本文将探讨VFP在学籍管理中的应用。
一、学生信息的录入和管理学籍管理的核心任务之一是学生信息的录入和管理。
VFP提供了强大的数据库管理功能,可以方便地创建和管理学生信息数据库。
通过VFP的表格功能,可以创建学生信息表,包括姓名、性别、年龄、班级、联系方式等字段。
学校可以根据实际需求自定义表格,添加其他必要的字段。
在VFP中,可以使用表格视图、表单视图和报表视图来方便地查看和管理学生信息。
表格视图可以以表格形式展示学生信息,可以对表格进行排序、筛选和搜索。
表单视图可以逐个学生地查看和编辑学生信息,方便进行详细的信息录入和修改。
报表视图可以生成学生信息的报表,方便学校进行统计和分析。
二、学生信息的查询和统计学校需要根据实际需求对学生信息进行查询和统计。
VFP提供了灵活的查询功能,可以根据不同的条件对学生信息进行筛选和搜索。
通过VFP的查询语言,可以方便地编写查询语句,实现根据姓名、班级、年龄等条件对学生信息进行精确查询。
除了查询功能,VFP还可以进行学生信息的统计和分析。
学校可以利用VFP的报表功能,生成学生信息的各类统计报表,如男女比例、班级人数分布、年龄段分布等。
这些统计报表可以帮助学校了解学生群体的特点,为学校的管理决策提供参考依据。
三、学生信息的导入和导出学校可能需要将学生信息导入到VFP中,或者将学生信息导出到其他格式。
VFP提供了数据导入和导出的功能,可以支持常见的数据格式,如Excel、CSV等。
学校可以将学生信息保存为指定格式的文件,方便进行数据的备份和共享。
四、学生信息的安全和权限控制学生信息是敏感信息,需要进行保密和权限控制。
VFP可以设置访问权限,确保只有授权人员可以访问和修改学生信息。
通过VFP的用户管理功能,可以创建不同的用户角色,并分配不同的权限。
VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel的控制作一下介绍:
*!* 1.创建Excel对象 oExcel=Createobject("Excel.application")
*!* 2.添加新工作簿 oExcel.Workbooks.Add
*!* 3.设置第3个工作表为激活工作表 oExcel.Worksheets("sheet3").Activate
*!* 4.打开指定工作簿 oExcel.Workbooks.Open("c:/temp/ll.xls")
*!* 5.显示Excel窗口 oExcel.Visible=.T.
*!* 6.更改Excel标题栏 oExcel.Caption="VFP应用程序调用Microsoft Excel"
*!* 7.给单元格赋值 oExcel.cells(1,4).Value=XM(XM为数据库字段名)
*!* 8.设置指定列的宽度(单位:字符个数) oExcel.ActiveSheet.Columns(1).ColumnWidth=5 *!* 9.设置指定行的高度(单位:磅) oExcel.ActiveSheet.Rows(1).RowHeight=1 (设定行高为1磅,1磅=0.035厘米) oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50行至100行的高度
*!* 10.在第18行之前插入分页符 oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1
*!* 11.在第4列之前删除分页符 oExcel.ActiveSheet.Columns(4).PageBreak=0
*!* 12.指定边框线宽度(Borders参数如下) ole.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3
*!* 13.设置四个边框线条的类型 oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1 (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)
*!* 14.设置页眉 oExcel.ActiveSheet.PageSetup.CenterHeader="报表1"
*!* 15.设置页眉(字体大小) oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后面的50可以自定义,表示字体的大小
*!* 16.设置页脚 oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页" *!* 17.设置页脚(字体大小) oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后面的28可以自定义,表示字体的大小
*!* 18.设置页眉到顶端边距为2厘米 oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.035
*!* 19.设置页脚到底边距为3厘米 oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.035
*!* 20.设置顶边距为2厘米 oExcel.ActiveSheet.PageSetup.TopMargin=2/0.035
*!* 21.设置底边距为4厘米 oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.035
*!* 22.设置左边距为2厘米 oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.035
*!* 23.设置右边距为2厘米 oExcel.ActiveSheet.PageSetup.RightMargin=2/0.035
*!* 24.设置页面水平居中 oExcel.ActiveSheet.PageSetup.CenterHorizontally=.T.
*!* 25.设置页面垂直居中 oExcel.ActiveSheet.PageSetup.CenterVertically=.T. *!* 26.设置页面纸张大小(1-窄行8511 39-宽行1411 9:A4) oExcel.ActiveSheet.PageSetup.Papersize=1
*!* 27.打印单元格网线 oExcel.ActiveSheet.PageSetup.PrintGridlines=.T.
*!* 28.拷贝整个工作表 oExcel.ActiveSheet.UsedRange.Copy
*!* 29.拷贝指定区域 oExcel.ActiveSheet.Range("A1:E2").Copy
*!* 30.粘贴 oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial
*!* 31.在第2行之前插入一行 oExcel.ActiveSheet.Rows(2).Insert
*!* 32.在第2列之前插入一列 oExcel.ActiveSheet.Columns(2).Insert
*!* 33.设置字体 oExcel.ActiveSheet.Cells(2,1).Font.Name="黑体"
*!* 34.设置字体大小 oExcel.ActiveSheet.Cells(1,1).Font.Size=25 *!* 35.设置字体为斜体 oExcel.ActiveSheet.Cells(1,1).Font.Italic=.T.
*!* 36.设置整列字体为粗体 oExcel.ActiveSheet.Columns(1).Font.Bold=.T.
*!* 37.清除单元格公式 oExcel.ActiveSheet.Cells(1,4).ClearContents
*!* 38.打印预览工作表 oExcel.ActiveSheet.PrintPreview
*!* 39.打印输出工作表 oExcel.ActiveSheet.PrintOut
*!* 40. oExcel.CommandBars(1).Controls(1).accChild(18).Execute &&打印(菜单序号18为Excel2003的‘打印’项) &&不同版本Excel的菜单序号可以通过以下程序取得 *(需要在VFP7.0以上运行) oXls=Getobject("","excel.sheet") XlApp=oXLS.Application XlSheet=XlApp.ActiveSheet bars=xlapp.CommandBars.Count Str1='' For i=1 To bars Str1=Str1+Chr(13)+Alltrim(Str(i))+'、'+xlapp.CommandBars(i).accName+'(NAME:'+xlapp.CommandBars(i).Name+' INDEX:'+Alltrim(Str(xlapp.CommandBars(i).Index))+')' bars2=xlapp.commandbars(i).accChildCount For j=1 To bars2 Try obj=xlapp.commandbars(i).Controls(j) Str1=Str1+Chr(13)+' '+Alltrim(Str(j))+'、'+xlapp.commandbars(i).Controls(j).accname+'(ID:'+Alltrim(Str(xlapp.CommandBars(i).Controls(j).Id))+')' For k=1 To obj.accChildCount Try If Not Empty(obj.Controls(k).accname ) Str1=Str1+Chr(13)+' '+Alltrim(Str(k))+'、'+obj.Controls(k).accName+' (ID:'+ Alltrim(Str(obj.Controls(k).Id))+')' Endif Catch Exit Endtry Endfor Catch Exit Endtry Endfor Wait Windows Alltrim(Str(i))+' / '+Alltrim(Str(bars))+' '+Str(i/bars*100,10,2)+'%' Nowait Endfor Save To Xls.txt All Like Str1 Modify Command Xls.txt Return
*!* 41.工作表另存为 oExcel.ActiveWorkbook.SaveAs("c:/temp/22.xls") *检测当前目录是否有同名的EXCEL表,如果有先删除,再另存 If !File(Sys(5) + Curdir() + "result.xls") oExcel.ActiveWorkbook.SaveAs(Sys(5) + Curdir() + "result.xls") Else lcFileName = loExcel.GetSaveAsFilename("result", "Excel (*.xls), *.xls") If !Empty(lcFileName) If File(lcFileName) Delete File (lcFileName) Endif