不知道你的表结构是否相同
相同的话可以用queryinsert into table1 (select * from table2)或者用 tablefor i:=0 to table1.RecordCount-1 do
begin
Table2.Append;
Table2.Fieldbyname('Fields').asstring:=Table1.Fieldbyname('Fields').asstring
table2.post;
table1.next
end;
相同的话可以用queryinsert into table1 (select * from table2)或者用 tablefor i:=0 to table1.RecordCount-1 do
begin
Table2.Append;
Table2.Fieldbyname('Fields').asstring:=Table1.Fieldbyname('Fields').asstring
table2.post;
table1.next
end;
然后把excel中的记录一条条的向里边加没有不行的道理呀
实在不行的话把你的代码贴出来
将EXCEL存为DBF(EXCEL自带)
再用DELPHI的DATA PUMP复制一下
1 首先,你的机器上安装了office 了吗?
2 你在delphi里可以通过ADO和你的Access里的目的表建立连接,并可以通过TADOQuery控件利用INSERT语句向表里插入数据吗?
3 你的excel表的文件是xls文件吗?如果以上三个问题你都有肯定的回答,不需要利用ADO连接excel表,也可以通过delphi和它建立联系并读出其中的数据的。我前面做过excel数据导入oracle数据库的工作
但首先我要确定以上三个问题,如果可能下次给出全部代码
我很急啊~~~~~~~~~~````
他们怎么和excel表连接起来啊?
var
AA:Variant;
begin
......
try
//创建Access Application对象,并打开Access数据库
//sTempPath为Access数据库的路径,比如'c:\aaa.mdb'
AA:=CreateOleObject('Access.Application');
if not FileExists(sTempPath)
then AA.NewCurrentDatabase(sTempPath)
else AA.OpenCurrentDatabase(sTempPath,false);
//开始转换,sacTableName为转换后的表名
AA.DoCmd.TransferSpreadsheet(acImport,acSpreadsheetTypeExcel8,sacTableName,sPathNameStr,true,'');
AA.CloseCurrentDatabase;
except
ShowMessage('转换过程中发生错误!');
end;
TExcelApplication1.WorkBooks.open('Excel文件名');
2 假设你是用 MyDealExel这个过程来处理导入的事情,那么,这样开始:
var
MsExcel: OleVariant;
WBook, WSheet: OleVariant;
theCount, i: Integer;
SqlStr: String;
begin
MsExcel := CreateOleObject('Excel.Application');
WBook := MsExcel.Application;
WBook.Visible := False; WBook.WorkBooks.Open('D:\Example\Test.xls');
// 这里是你要打开的Excel文件的全路径名 WSheet := WBook.ActiveSheet; theCount := 12345; // 假设你已经知道了该Excel文件中记录的行数
// 如果在处理的时候不确定,可以写一个小程序算出来,我的方法很笨
{ j := 0;
for i := 1 to WSheet.Rows.Count - 1 do
begin
j := j + 1;
if Trim(WSheet.Cells[j, i].Value) = '' then Break;
end; }{ WSheet表示该文件中的一行,用WSheet.Cells[theRowNum,theColNum].Value 可以取出Excel文件中一个单元格的值,如:
WSheet.Cells.[1,3].Value即第一行第三列的值 }// 进行数据的导入,一种是简单的,表结构相同的导入;一种是表结构不同,
// 需要对数据进行处理,规范的导入,顺序也可能不一样。它们都可以通过
// SQL语句:INSERT INTO TableName Values(Value1,Value2,...)
// 借助TQuery控件来实现
// 对第一种情况,Value1就是WSheet.Cells.[theRowNum,1].Value,
// Value2...
// 对第二种情况,需要处理,具体根据数据库的要求
// 处理的思想就是这样,下面就是填代码了 for i := 1 to theCount do
begin
DoDeal(i);
SqlStr := ...;
end;// 最后
MsExcel.Quit;
end;希望对你有帮助。前提是你对导入前后的数据流向要清楚,还有就是Excel中有所少列记录你要数清楚啊