使用VFP读取EXCEL中的数据示例
*!* *****数据导入程序,由“学生基本基本情况表模板.xls”导入数据
*!* ***使用VFP控制EXCEL表,计取中指定列的内容***********
*!* "学生基本基本情况表模板.xls"的数据布局
*!* cells(1,1):“标题”
*!* cells(2,1):校区
*!* cells(2,3):学历
*!* cells(2,5):专业
*!* cells(2,6):班级
*!*
*!*
set safe off
set talk on
LOCAL inf(4) as String
*dele file C:\MyDocu~1\Resume.xlw
objExcel = CreateObject("Excel.Application") &&创建一个EXCEL应用程序实例
wjm=getfile("xls")
objExcel.Workbooks.Open(wjm) &&调用workbooks(Microsoft Excel 应用程序;
中当前打开的所有 Workbook 对象的集合。);
对象的open方法程序来打开指定的文件,并为;
打开的文件创建一个新的工作簿
*objexcel.visible=.f.
***下面的代码判断出生日期字段的格式是否满足要求***
*IF !varTYPE(objexcel.cells(10,6))="d"
* MESSAGEBOX("出生日期字段不满足格式要求,不能导入,请将出生日期字段修改为:"+CHR(13);
+"mm.dd.yy的格式,如:05.19.83 表示1983年5月19 然后再运行此导入程序")
* RETURN
*ENDIF
inf(1)=substr(objexcel.cells(2,1).value,7)&&校区
Inf(2)=objexcel.cells(2,4).value&&学历
inf(3)=objexcel.cells(2,6).value&&专业
inf(4)=objexcel.cells(2,7).value&&班
LOCAL nrow as Number ,i as Number
i=0
*MESSAGEBOX("计算行数")
*MESSAGEBOX(objexcel.cells(5,1).value)
*MESSAGEBOX(VARTYPE(objexcel.cells(22,1).value))
DO WHILE .t.
i=i+1
?objexcel.cells(i,1).value
IF !VARTYPE(objexcel.cells(i,1).value)="C"
nrow=i-1
EXIT
ENDIF
ENDDO
*nrow=20
LOCAL arecord(16)
*MESSAGEBOX("循环添加记录")
USE zlb
disinf("zlb.dbf中现有记录"+ALLTRIM(STR(RECCOUNT()))+"条")
disinf("正在添加记录")
FOR i=4 TO nrow
arecord(1)=objexcel.cells(i,1).value&&学号
arecord(2)=objexcel.cells(i,2).value&&姓名
arecord(3)=objexcel.cells(i,3).value&&性别
arecord(4)=objexcel.cells(i,4).value&&籍贯
arecord(5)=objexcel.cells(i,5).value&&民族
*MESSAGEBOX(VARTYPE(objexcel.cells(i,6).value))
IF VARTYPE(objexcel.cells(i,6).value)="C"
arecord(6)=RIGHT(objexcel.cells(i,6).value,2)+"/"+"01"+'/';
+LEFT(objexcel.cells(i,6).value,2)
ELSE
arecord(6)= RIGHT(STR(objexcel.cells(i,6).value,5,2),2);
+"/"+"01"+"/";
+LEFT(STR(objexcel.cells(i,6).value,5,2),2)
ENDIF
&&arecord(6)=IIF(VARTYPE(objexcel.cells(i,6).value)="c",RIGHT(objexcel.cells(i,6).value,2)+"/"+"01"+'/'+LEFT(objexcel.cells(i,6).value,2),;
RIGHT(STR(objexcel.cells(i,6).value,5,2),2)+"/"+"01"+'/'+LEFT(STR(objexcel.cells(i,6).value,5,2),2))&&出生年月
arecord(7)=LEFT(ALLTRIM(STR(objexcel.cells(i,8).value,6,0)),6)&&邮政编码
arecord(8)=objexcel.cells(i,7).value&&通讯地址
arecord(9)=objexcel.cells(i,9).value &&收信人
arecord(10)=iif(!ALLTRIM(objexcel.cells(i,10).value)=="",objexcel.cells(i,10).value;
,"无")&&家庭电话
arecord(11)=inf(3)&&专业
arecord(12)=inf(4)&&班级
arecord(13)=objexcel.cells(i,11).value&&寝室号码
arecord(14)=STR(objexcel.cells(i,12).value,7,0)&&寝室电话
arecord(15)=inf(1)&&校区
arecord(16)=inf(2)&&学历
SELECT zlb
APPEND FROM ARRAY arecord
ENDFOR
disinf("zlb.dbf中现有记录"+ALLTRIM(STR(RECCOUNT()))+"条")
disinf("记录添加完毕,共添加了"+ALLTRIM(STR(nrow-3))+"条记录,请查检")
INKEY(3)
WAIT CLEAR
****定义日期转换函数,此函数能将各种格式的日期转换成mm/dd/yy的格式****
****如果要转换的日期只有年和月,则自动添加日为'01'***
*!* FUNCTION datetran
*!* PARAMETERS soudate
*!* IF VARTYPE(soudate)="N"
*!* DO case
*!* CASE LEN(souDATE)
***关闭工作簿,退出EXCEL
objexcel.quit
RELEASE objexcel
*!* objexcel.save
*!* *objExcel.ActiveWorkbook.saved=.f.
*!* objexcel.Quit &&退出
*!* RELEASE objexcel
*!* retu