Excel表数据导入到VFP表的动态实现.doc_第1页
Excel表数据导入到VFP表的动态实现.doc_第2页
Excel表数据导入到VFP表的动态实现.doc_第3页
Excel表数据导入到VFP表的动态实现.doc_第4页
Excel表数据导入到VFP表的动态实现.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Excel表数据导入到VFP表的动态实现2012年第1期No.1,2012九江学院(自然科学版)(总第96期)JournalofjiujiangUniversity(naturalsciences)(SumNo.96)Excel表数据导入到VFP表的动态实现谢忠(九江学院实验中心江西九江332005)摘要:日常工作中经常会将Excel表数据转换到VFP数据表中,但将Excel表的数据动态地导入到相应的VFP数据表中就比较困难.笔者通过编程,实现了根据VFP表结构与EXCEL数据表结构进行动态对应,生成数据导入方案,将EXCEL数据表中数据导入到VFP表中.关键词:Excel表,VFP表,动态导入中图分类号:TP317.3文献标识码:A文章编号:16749545(2012)01一OO50一(04)VFP(VisualFoxpro)是一种关系型数据库管理系统,它提供了功能完备的工具,极其友好的用户界面,简单的数据存取方式,独一无二的跨平台技术,有良好的兼容性,真正的可编译性和较强的安全性,是目前最快捷,最实用的数据库管理系统软件之一,其强大的数据处理能力及其面向对象的编程能力,使其得到数据库应用程序开发人员的广泛使用.Excel是一个优秀的电子表格处理软件,在兼容性,操作界面,公式运算,图表表现等方面有着独到的优势,成为广大办公应用人员常用的工具.在实际应用中,常常会遇到用Excel表来进行数据的采集工作,而用VFP进行数据的收集汇总,统计,分析等,为此将Excel表中的数据导人到VFP的数据库表中成为数据库应用系统中很重要的一个功能.1问题的提出Excel和VFP两款软件都提供了相应的转换功能,一般用户很容易操作.但是把Excel表中数据部分动态转移到已存在的VFP表中的情况就要复杂得多.两种表的数据相互转换存在如下问题:一是Excel表中并非所有列需要转换到VFP中,需要选取其中部分;二是存在Excel表中与VFP表结构顺序,Excel表列名与VFP表字段名顺序不一致;三是存在Excel表单元数据与VFP表字段记录数据类型不一致.因此,对已存在的这两类收稿日期:2012一O102通讯作者:谢忠,.数据表间数据相互转换工作,用手工完成非常麻烦,费时,也容易出现差错.笔者是在我校质量工程项目课酬核算系统中遇到实际问题而提出的一个解决方法.由于各二级学院使用Excel表填报课酬预算,主管部门将各二级学院上报的Excel表导人系统汇总,再进行核查,统计,分析.为此需要每次将大量Excel表数据(如学院的课酬预算表,教学计划表,教师信息表,专业班级信息表等)导人到VFP开发的课酬核算系统中,通过系统设计的将Excel表数据动态导人到VFP表的功能模块,很好的解决了实际工作中的难题.2设计思路要实现Excel表与VFP表之间的相互转换,则必须解决此两者间的互通联系问题以及Excel表单元中的数据与VFP表字段对应,即:一是如何确定Excel表中的列与VFP表的字段相对应;二是要确定Excel表中数据范围且范围中的每一行作为VFP中的一条记录;三是如何将Excel表中每个单元中的数据类型与VFP中的字段数据类型进行一致转换.由于这两款软件都是由Microsoft研制开发的软件产品,在VFP数据库开发软件中通过创建对象(Creatobject方法)来对Excel表进行控制处理,这样通过编程控制处理就可以解决VFP与Excel表的互通联系,针对数据类型,笔者第1期谢忠:Excel表数据导入到VFP表的动态实现?5l?通过编程测试发现Excel表中单元的数据类型在转换到VFP中时,只有4种数据类型,即N(数值型),Y(货币会计型也是数值类型),T(13期型),c(字符型),这样可以很容易在VFP表中与之对应来解决数据类型的匹配转换.具体设计思路流程如图1.图1设计思路流程3具体编程实现3.1数据导入方案表设计本文在编码实现中,根据实际应用,设计出了一个将Excel表数据导人VFP中的通用且动态方式,设计了3个数据表,分别是importk.dbf(系统数据文件信息表),importpro(数据导人方案表),datastr.dbf(数据导人方案临时表).具体三个表的结构见表1,表2.表1import_k.dbf(系统数据文件信息表)表2importpro(数据导人方案表)data_str.dbf(VFP数据表结构表)与importpro(数据导人方案表)结构一样,用来作为当前转换导人数据的临时方案表.3.2数据导入界面设计在进行操作界面设计时,应考虑用户操作的便捷性和直观性.设计界面时应将所有的操作对象都展现出来,操作无需键盘输入,只需点击鼠标.界面是通过设计一张表单,在表单中设计6个按钮(excel表选择按钮/选择对应数据表确定按钮/方案重新设置按钮/方案保存按钮/数据导人按钮/退出按钮),1个表格控件(表格控件GRID1灰色部分为VFP表结构部分,不可修改编辑;白色部分为excel表的结构,此列信息可以修改,通过在GRID1中添加下拉组建来选取其对应的VFP表字段的excel列名),文本框和下拉组合框等,具体见图2.图2操作界面?52?九江学院(自然科学版)2012年第1期3.3主要代码实现?选取excel表文件文本框lostfocus代码(ExlText2.1osffocus事件):&&创建excel表对象,并获取其相关信息cexcel=createobject(exce1.application)cexce1.visible=.f.weexcel=Cexce1.workbooks.open(zsmL)wesheetname=Cexce1.application.ActiveSheet.Namewerange=weexce1.worksheets(weshe-etname).UsedRangewerows=werange.Rows.countwecols=werange.Columns.countpublicPP(WEcols+1)&&用于保存excel表的列号和表的标题名ifwerows<=1=messagebox(导入的数据不存在,请检查!,0+l6,错误提示)elsepp(wecols+1)=fori=1towecolsml=Cexce1.ceHs(1,i).valuepp(i)=str(i,2)+Cexce1.cens(1,i).valueendforendif&&在gTidl表格中对excel列名称列单元设置下拉组件对象,下拉数据为数组pp,其保存excel表列号和表标题.以用来选择与VFP字段对应.withthisform.gdd1.column6.addobject(combol,ComboBox).currentcontrol=bo1.style=2.combo1.RowSourceType=5.combo1.RowSource=Pbo1.visible=.t.endwiththisfoFbo2.seffoCUS选择对应数据表确定按钮代码(Okbm.click事件)seleimport.kekm=import_k.Xkmseleimport_prolocatefordnalne=alltrim(ekm)ifeof()sele10use&ekm.dimeaflist(1)=afields(aflist)Cfile=aflist(1,12)form.i=fcount()to1steplaflist(m.i,1)=dbgetprop(Cfile+.+aflist(m.i,1),field,caption)&&读取VFP字段标题endfor&&生成数据导人方案iffile(tempstr.dbf)delefiletemp.str.dbfendifcopystruextendtotemp.strUseusetemp_strgotopm.i=ldowhilenoteof()seled.strappendblankreplaceena!Tlewithtempstr.fieldname,f_typewithtempstr.fieldtypereplaceLlenwithtempstr.fieldlen,Ldecwithtempstr.fielddecreplaceCnalnewithaflist(m.i,1)replacednamewithimport_k.Xkmsele10skipm.i=m.i+lthisform.grid1.refreshenddoelsesele12appendfromimport_proforalltrim(dname)=aHim(ekm)endifthisform.grid1.refresh数据导人按钮代码(Importbtn.clik事件)第1期谢忠:Excel表数据导人到VFP表的动态实现?53?iflen(alltrim(thisform.text2.value)=0=messagebox(设有选择导人的数据文件,请选择好再导人!64+O,提示信息thisform.text2.setfocusreturnendififwerows<=1=messagebox(导人的数据不存在,请检查!,0+16,错误提示)returnendifsele12gotopbname=dstr.dname&&数据导人方案表中的数据表名nhum=reccount()dimebarray(nBum),btype(nnum),exlarray(nnum)i=ldowhilenoteof()ifi<=nnumbarray(i)=dstr.enamebtype(i)=dstr.ftypeexlarray(i)=alltrim(subs(dstr.exlcol,1,2)endifi=i+1skipenddosele13use&bname.excl&&读取excel表各行的每个单元,并判断其数据类型,进行数据转换后,添加到VFP数据表中sele13fori=2towerowsappendblankforj=1tonnumiflen(exlarray(j)<>0mval=Cexce1.cells(i,val(exlarray(j).valuedocasecasebtype(j)=Niftype(inval)=Cmval=val(mva1)endififtype(inval)=Tmval=0endifcasebtype(j)=Ciftype(inval9=Nortype(inval)=Ymval=str(mva1)endififtype(in_val)=Tmval=dtoc(mva1)endifcasebtype(j)=Diftype(inval9=Cmval=ctod(mva1)endififtype(inval)=Nortype(inval)=Ym

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论