首页 考试资料幻灯片工程技术公务员考试小学教学中学教学大学教学外语资料
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)或逗号“, ” 分隔。 在低级文件控制函数中需要使用 FOPEN() 、FREAD() 、FCLOSE() 、FEOF()四个函数。 FOPEN()函数来正确打开文件,FCLOSE()函数来关闭文件,FEOF()函数来判断文件是 否结束,FREAD()函数来读取文件,FREAD()在读取过程中同时移动文件指针,不需要 使用 FSEEK()函数再来移动文件指针。

下面程序就是输入一个文本文件(含扩展名和路径)然后自动转换成 VF 中的表。 (此程序 在 VF6.0 下调试通过) set talk off clea close all clea all *输入被转换的文本文件的文件名(含扩展名) accept "输入文件的路径和文件名(含扩展名)" to abc hdq1=fopen("&abc") *打开文本文件是否正确 if hdq1<0 =messagebox("打开文件错误!",0+48,"错误") return else ai=0 zd1="(" zd2="(" kk="" *读取第一条记录的项目个数和宽度,注意第一条记录不能为空,项目也不能为空 for i=1 to 100 ab="aa"+allt(str(i)) &ab="" *读入一项目的内容 dowhil .t. ctemp=fread(hdq1,1) if ctemp<>chr(9) and ctemp#chr(13) and ctem<>”,” &ab=&ab+ctemp ai=ai+1 else exit endif enddo *判断项目内容是否为空 iflen(alltrim(&ab))#0 zd1=zd1+"dd"+allt(str(i))+" char("+alltrim(str(2*len(&ab)))+")," zd2=zd2+"dd"+allt(str(i))+"," kk=kk+ab+"," endif *判断一行是否读结束 ifctemp=chr(13) gh=fread(hdq1,1) exit endif

endfor zd1=subs(zd1,1,len(zd1)-1)+")" zd2=subs(zd2,1,len(zd2)-1)+")" kk=subs(kk,1,len(kk)-1) *根据变量 zd1 的内容在 d 盘根目录下建立 dbf1 表 create table d:\dbf1 &zd1 *在 d 盘根目录下的 dbf1 表中插入一条记录 insert into dbf1&zd2 values(&kk) *继续读入其它记录内容 dowhil .t. *读入一条记录的内容 fori=1 to 100 ab="aa"+allt(str(i)) &ab="" *读入一项的内容 dowhil .t. ctemp=fread(hdq1,1) if ctemp<>chr(9) and ctemp#chr(13) and ctem<>”,” &ab=&ab+ctemp else exit endif enddo *一条记录结束 ifctemp=chr(13) =fread(hdq1,1) exit endif endfor *将读入的记录插入到表中 insert into dbf1&zd2 values(&kk) iffeof(hdq1) exit endif enddo *关闭文件 =fclose(hdq1) endif RETURN

 


 

  【Top

最新搜索

 

VF中正确导入EXCEL表的几种方法 - VF 中正确导入 EXCEL 表的几种方法 一次在处理全县小学生毕业会考成绩时,由于各学校交的表格不一致,也不方便统计,为了 统计...

VF中正确导入EXCEL表的几种方法_初二数学_数学_初中教育_教育专区。VF中正确导入EXCEL表的几种方法 VF 中正确导入 EXCEL 表的几种方法一次在处理全县小学生毕业...