如何在PB和ASP中读取EXCEL电子表格的数据
杨继春 仵丁丑
西安市505信箱14号
在POWER BUILDER中,虽然在ODBC设置中提供了与EXCEL电子表格的接口,但是由于EXCEL的结构比较特殊,因此,如果按一般的数据库连接方法,则在读取数据时会出现“SYNTAX ERROR FROM CLAUSE”的错误,究其原因,是由于电子表格中左下角的SHEET1、SHEET2、SHEET3并不是真正意义上的表名,因而在数据传输时会出现找不到表名的错误,为了在PB中读取电子表格的数据,我们需要作如下处理:
假设有一个EXCEL电子表格,名为MYDATA.XLS,打开该电子表格,选定所需要的行与列,然后按菜单上的插入/名称/定义,弹出一个定义名称的对话框,我们在其中给所选的数据定义一个表名,如WORK,在该对话框的下端的引用位置中,有这样一句话“=SHEET1!$A$1:$C$22”,意思为该表名所定义的行列为SHEET1中的第一列第一行到第三列第22行,如想选择所有行,只需将其改为“=SHEET1!$A:$C”即可。然后按确定,这样我们就给所选定的行列定义好了名称。接着我们在PB的面板中连接该数据库,从中选择刚才定义的表,即可读出EXCEL电子表格中的数据了。若需要在程序中动态读取,只需在程序中加入下列语句:
SQLCA.DBMS=PROFILESTRING("PB.INI","DATABASE","DBMS","")
SQLCA.DATABASE=PROFILESTRING("PB.INI","DATABASE","DATABASE","")
SQLCA.DBPARM=PROFILESTRING("PB.INI","DATABASE","DBPARM","")
CONNECT USING SQLCA;
IF SQLCA.SQLCode<0 THEN
MESSAGEBOX("错误信息","连接数据库失败!")
RETURN
END IF
然后再SELECT * FROM WORK即可。
在ASP中读取EXCEL电子表格中的数据的方法,和PB中读取的方法基本相同,只需将读取数据库的程序改为下列语句即可。
SET CONN=SERVER.CREATOBJECT("ADODB.CONNECTION")
CONN.OPEN "MYDATA"
SET CONNSTR=SERVER.CREATOBJECT("ADODB.RECORDSET")
CONNSTR.SOURCE="SELECT * FROM WORK"
CONNSTR.OPEN