关于EXCEL数据表的问题。 (50分)

  • 主题发起人 主题发起人 tingyuxuan1
  • 开始时间 开始时间
T

tingyuxuan1

Unregistered / Unconfirmed
GUEST, unregistred user!
我对数据库不是很熟悉,请教各位大侠几个问题,恳请您的帮助。
用DEELPHI是否能够操作EXCEL数据库OR数据表?
如果能,需要进行哪些配置?
如果对EXCEL数据表里的数据进行操作,比如提取某些特定类型的数据,是不是也有相应的字段索引?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=575846
设置属性ConnetionString
选择 Microsoft Jet 4.0 OLE DB provider
Select or enter a datasorce name -> 选择你要打开Excel文件
User name默认是Admin 密码默认为空,可以不用理会
Extended properties 设为:Excel 8.0
sql语句 select * from [yourtablename]
(注意要有[])
==============================================
我得解决方案:
用ADOTable控件打开Excel 文件
1)设置属性ConnetionString
选择 Microsoft Jet 4.0 OLE DB provider
Select or enter a datasorce name -> 选择你要打开Excel文件
User name默认是Admin 密码默认为空,可以不用理会
Extended properties 设为:Excel 8.0 (Excel 2000 好象不可以写成Excel 9.0)就可以读取Excel 97以下得版本的Excel文件
2)属性TableDirect 设为True (否则会出现“FROM 子句的语法错误。”的错误提示 )
3)这时可以从Table属性里面选择table了,所有的文件都是加了$符号的,程序中动态显示的话
可以参考我这个例子:
procedure TForm1.Button1Click(Sender: TObject);
var ProviderStr:string;
Str1,Str2,Str3:String;
SQLstr:string;
i:integer;
begin
ADOTable.Active:=False;
ProviderStr:=ADOTable.ConnectionString;
Str3:=StrPos(PChar(ProviderStr), PChar(';Mode=ReadWrite|Share Deny None;Extended Properties=Excel 8.0'));
Str1:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=admin;';
Str2:='Data Source='+FileList1.FileName;
ADOTable.ConnectionString:=Str1+str2+str3;
for i:=Length(FileList.FileName) do
wnto 1 do
if Copy(FileList.FileName,i,1)='/' then
break;
SQLStr:=Copy(FileList.FileName,i+1,Length(FileList.FileName)-i-4);
SQLStr:=SQLStr+'$';
ADOTable.TableName:= SQLStr;
// SHOWMESSAGE(ADOTable.ConnectionString);
// Showmessage(SQLStr);
try
QdbfOrd.Active:=True;
except
{Error message};
end;

end;

如果用ADOQuery和ADODataSet的话,我就不知到如何设置,老是出现“FROM 子句的语法错误。”的错误提示
链接Excel 2000 的时候Extended Properties=Excel 8.0是正确的。
在MSDN中说明:
Excel 97 对应 ‘Excel 97’
Excel 2000 对应 ‘Excel 8.0’
我试过2000的可以相连。

在ADOQuery中 select * From [Sheet1$]就可以将对应的表的内容读出
记住一定要在表名两边加[]在表名后面加$,不然就报FROM 子句的语法错误
在ADOTable中选择表名时也应手工将这两个符号加上
 
谢谢yzhshi兄的指点,以后还请多帮忙。
 
后退
顶部