Delphi程序里,能不能在不打开Excel文件的情况下,直接读取Excel文件里的选区数据?
(注意,前提:仅仅启动Excel应用,而不在Excel里打开该文件,Delphi程序能读取其数据吗?)以前我用Lotus123时,就可以。现在改用Excel,不知道Excel这点怎样?请各位给点提示
(注意,前提:仅仅启动Excel应用,而不在Excel里打开该文件,Delphi程序能读取其数据吗?)以前我用Lotus123时,就可以。现在改用Excel,不知道Excel这点怎样?请各位给点提示
可以不显示。Visible设置为False就不显示了。
var
s: TStrings;
begin
OpenDialog1.Filter := 'Excel 文件(*.xls)|*.xls';
if OpenDialog1.Execute then
begin
s := TStringList.Create;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + OpenDialog1.FileName + ';Extended Properties=excel 8.0;Persist Security Info=True';
ADOConnection1.LoginPrompt := False;
ADOConnection1.Connected := True;
ADOConnection1.GetTableNames(s);
ADODataSet1.Connection := ADOConnection1;
ADODataSet1.CommandText := 'select * from [' + s[0] + ']';
//s[0]通常是'Sheet1$', 代表第一页,为了安全字符串中的 [] 应该保留去掉,因为'select * from Sheet1$'的SQL会报错,而为'select * from [Sheet1$]'不会
ADODataSet1.Open;
//ADODataSet1中即为Excel文件中的数据,文件第1行为FieldName,其他为数据
s.Free;
end;
end;
...
xlsw: TXLSReadWriteII2;
xlsr: TXLSDbRead2;
...
xlsw.Read;
with xlsw.Sheets.Items[0],mycard do //第一个sheet
begin
for r:=起始行 to 终止行(LastRow为最后一行) do
begin
varval:= AsString[列,r];
...
end;
end;