procedure TForm1.Button1Click(Sender: TObject); var a_cc: TStrings; ExcelApp: Variant; begin if OpenDialog1.Execute then begin {打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误} ExcelApp := CreateOleObject( 'Excel.Application' ); ExcelApp.WorkBooks.Open(OpenDialog1.FileName); ExcelApp.ActiveWorkBook.Save; ExcelApp.Quit; varclear(ExcelApp);
a_cc :=TStringList.Create; {ADOConn是数据库连接控件ADOConnection} ADOConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog1.FileName + ';Extended Properties=excel 8.0;Persist Security Info=false'; ADOConn.Connected := True; ADOConn.GetTableNames(a_cc);{将EXCEL文件中的表格名单赋值于a_cc变量} with adoquery2 begin Close; sql.text:='select * from ['+a_cc[0]+']';//得到EXCEL文件中的第一个表格的数据 open; while not eof begin {adoquery1是操作ACCESS或SQL数据表的,XF_A是姓名 xf_b 是年龄 } adoquery1.Append; adoquery1.FieldByName('xf_a').AsString:=FieldValues['姓名']; adoquery1.FieldByName('xf_b').AsInteger:=strtoint(FieldValues['年龄']); ... adoquery1.post; next; end; close; end;
xlsFile: String;
xlsApp, Sheet: OleVariant;
begin
Result := '';
try
xlsFile := 'c:\file1.xls';
xlsApp := CreateOleObject('Excel.Application'); //需要引用 ComObj 单元
try
//打开xls文件
xlsApp.WorkBooks.Open(xlsFile);
Sheet := xlsApp.Sheets[1];
try
//光标归位到Excel档第一页第一格
if xlsApp.ActiveSheet.Index <> Sheet.Index then
Sheet.Select;
Sheet.Cells.Item[1,1].Select;
//显示第3行第5列的数据,可参考此句用循环与判断取出xls中所有数据
ShowMessage(VarToStr(Sheet.Cells.Item[3,5].Value));
end;
finally
Sheet := unassigned;
xlsApp.Quit;
xlsApp := Unassigned;
end;
except
ShowMessage('无法启动Excel程式,请检查!');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a_cc: TStrings;
ExcelApp: Variant;
begin
if OpenDialog1.Execute then begin
{打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误}
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Open(OpenDialog1.FileName);
ExcelApp.ActiveWorkBook.Save;
ExcelApp.Quit;
varclear(ExcelApp);
a_cc :=TStringList.Create;
{ADOConn是数据库连接控件ADOConnection}
ADOConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog1.FileName + ';Extended Properties=excel 8.0;Persist Security Info=false';
ADOConn.Connected := True;
ADOConn.GetTableNames(a_cc);{将EXCEL文件中的表格名单赋值于a_cc变量}
with adoquery2 begin
Close;
sql.text:='select * from ['+a_cc[0]+']';//得到EXCEL文件中的第一个表格的数据
open;
while not eof begin
{adoquery1是操作ACCESS或SQL数据表的,XF_A是姓名 xf_b 是年龄 }
adoquery1.Append;
adoquery1.FieldByName('xf_a').AsString:=FieldValues['姓名'];
adoquery1.FieldByName('xf_b').AsInteger:=strtoint(FieldValues['年龄']);
...
adoquery1.post;
next;
end;
close;
end;
adoconn.Connected:=false;
a_cc.Free;
messagebox(handle,'数据处理完毕','提示',MB_OK+MB_ICONINFORMATION);
end;
end;