实现读取EXCEL的代码:
procedure Tform_getinfo.Button2Click(Sender: TObject);
var
a_cc: TStrings;
ExcelApp: Variant;
begin
if OpenDialog2.Execute then
begin
edit5.Text:=OpenDialog2.FileName;
//Fmdir.FileListBox1.FileName;
{打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误}
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Open(OpenDialog2.FileName);
ExcelApp.ActiveWorkBook.Save;
ExcelApp.Quit;
varclear(ExcelApp);
a_cc :=TStringList.Create;
{ADOConn是数据库连接控件ADOConnection}
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog2.FileName + ';Extended Properties=excel 8.0;Persist Security Info=false';
ADOConnection1.Connected := True;
ADOConnection1.GetTableNames(a_cc);{将EXCEL文件中的表格名单赋值于a_cc变量}
with adoquery1 do
begin
Close;
sql.text:='select 记录序号,寄达局邮编,收件人姓名,收件人地址 from ['+a_cc[0]+']';//得到EXCEL文件中的第一个表格的数据
open;
end;
DBGrid1.Columns[0].Width:=80;
DBGrid1.Columns[1].Width:=80;
DBGrid1.Columns[2].Width:=80;
DBGrid1.Columns[3].Width:=200;
end;
GroupBox1.Visible:=false;
end;
===========================请问我要实现刷新数据应该如何实现
ADOQuery1.Refresh; 提示错误报告:“缺少刷新或更新的键列信息”
在线等,谢谢啦
procedure Tform_getinfo.Button2Click(Sender: TObject);
var
a_cc: TStrings;
ExcelApp: Variant;
begin
if OpenDialog2.Execute then
begin
edit5.Text:=OpenDialog2.FileName;
//Fmdir.FileListBox1.FileName;
{打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误}
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Open(OpenDialog2.FileName);
ExcelApp.ActiveWorkBook.Save;
ExcelApp.Quit;
varclear(ExcelApp);
a_cc :=TStringList.Create;
{ADOConn是数据库连接控件ADOConnection}
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog2.FileName + ';Extended Properties=excel 8.0;Persist Security Info=false';
ADOConnection1.Connected := True;
ADOConnection1.GetTableNames(a_cc);{将EXCEL文件中的表格名单赋值于a_cc变量}
with adoquery1 do
begin
Close;
sql.text:='select 记录序号,寄达局邮编,收件人姓名,收件人地址 from ['+a_cc[0]+']';//得到EXCEL文件中的第一个表格的数据
open;
end;
DBGrid1.Columns[0].Width:=80;
DBGrid1.Columns[1].Width:=80;
DBGrid1.Columns[2].Width:=80;
DBGrid1.Columns[3].Width:=200;
end;
GroupBox1.Visible:=false;
end;
===========================请问我要实现刷新数据应该如何实现
ADOQuery1.Refresh; 提示错误报告:“缺少刷新或更新的键列信息”
在线等,谢谢啦
ADOQuery1.Refresh;
改为:
ADOQuery1.close;
ADOQuery1.open;
{举例:第一次打开1.xls,edit5.Text自然等于1.xls,当你即时第二次要打开1.xls时可以防重复打开,但是如果先打开1.xls,再打开2.xls,再次打开1.xls,你就防不了}
2.ADOQuery1在OPEN后,你Refresh来Refresh都是先前的SQL数据集,而再次CLOSE,OPEN就不同了.