使用Delphi编写数据库应用程序,并需要将数据导入Excel表并将其保存在访问数据库中。我不知道如何做到这一点,使用什么组件,或者甚至可以,请你帮助我。如何使用Delphi将Excel文件导入到Access数据库中
4
A
回答
12
您有几种选择,使用DoCmd.TransferSpreadsheet
功能尝试这些
1之一),这种方法简单,但不是很灵活。
{$APPTYPE CONSOLE}
{$R *.res}
uses
SysUtils,
ActiveX,
ComObj;
procedure ImportDataAccess(const AccessDb, TableName, ExcelFileName:String);
Const
acQuitSaveAll = $00000001;
acImport = $00000000;
acSpreadsheetTypeExcel9 = $00000008;
acSpreadsheetTypeExcel12 = $00000009;
var
LAccess : OleVariant;
begin
//create the COM Object
LAccess := CreateOleObject('Access.Application');
//open the access database
LAccess.OpenCurrentDatabase(AccessDb);//if the access database doesn't exist use the NewCurrentDatabase method instead.
//import the data
LAccess.DoCmd.TransferSpreadsheet(acImport, acSpreadsheetTypeExcel9, TableName, ExcelFileName, True);
LAccess.CloseCurrentDatabase;
LAccess.Quit(1);
end;
begin
try
CoInitialize(nil);
try
ImportDataAccess('C:\Data\Database1.accdb','Sales','C:\Data\Sales.xlsx');
Writeln('Done');
finally
CoUninitialize;
end;
except
on E:EOleException do
Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
Writeln('Press Enter to exit');
Readln;
end.
2)使用ado组件,更灵活的方法。
{$APPTYPE CONSOLE}
{$R *.res}
uses
Data.DB,
Data.Win.ADODB,
SysUtils,
ActiveX,
ComObj;
procedure ImportDataADO(const AccessDb, TableName, ExcelFileName:String);
var
LAdoQueryExcel : TADOQuery;
LADOAccesCmd : TADOCommand;
begin
LAdoQueryExcel:=TADOQuery.Create(nil);
LADOAccesCmd:=TADOCommand.Create(nil);
try
//set the connection string for access
LADOAccesCmd.ConnectionString:=Format('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;',[AccessDb]);
LADOAccesCmd.Parameters.Clear;
LADOAccesCmd.CommandText:='INSERT INTO Sales (id,name) VALUES (:id,:name)';
LADOAccesCmd.ParamCheck:=False;
//set the connection string for excel
LAdoQueryExcel.ConnectionString:=Format('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1"',[ExcelFileName]);
LAdoQueryExcel.SQL.Add('SELECT * FROM [Sheet1$]');
LAdoQueryExcel.Open;
while not LAdoQueryExcel.eof do
begin
LADOAccesCmd.Parameters.ParamByName('id').Value := LAdoQueryExcel.FieldByname('id').AsInteger;
LADOAccesCmd.Parameters.ParamByName('name').Value := LAdoQueryExcel.FieldByname('name').AsString;
LADOAccesCmd.Execute;
LAdoQueryExcel.Next;
end;
finally
LAdoQueryExcel.Free;
LADOAccesCmd.Free;
end;
end;
begin
try
CoInitialize(nil);
try
ImportDataADO('C:\Datos\Database1.accdb','Sales','C:\Datos\Sales.xlsx');
Writeln('Done');
finally
CoUninitialize;
end;
except
on E:EOleException do
Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
Writeln('Press Enter to exit');
Readln;
end.
相关问题
- 1. 如何使用Delphi将Access数据库导出到Excel
- 2. 将Excel文件导入到Access数据库中
- 3. 如何使用php将excel文件导入到mySQL数据库
- 4. 如何使用phpmyadmin将Excel文件导入到mysql数据库
- 5. 将Excel文件数据导入Access数据库VBA
- 6. 将Excel数据导入Access
- 7. 如何将excel文件导入到MySQL数据库中
- 8. 如何使用powershell将CSV文件导入到Access 2010数据库中
- 9. 将Excel数据导入到Access数据库
- 10. 如何将excel文件导入到h2数据库?
- 11. Access中导入Excel数据
- 12. MS Access 2003 - 将文本文件导入MS Access数据库表
- 13. 如何将文本文件中的数据导入到Excel中?
- 14. 从Excel导入数据到MS Access中
- 15. 如何将ddl数据库文件导入MS Access?
- 16. 如何使用表单按钮将月度Excel文件导入到Access表中?
- 17. 如何将xlsm文件导入到Access
- 18. 如何使用java将.xls文件导入到mysql数据库?
- 19. 将文本文件导入Windows 7中的Access数据库
- 20. 导入数据库中的Excel文件
- 21. 如何使用vb.net将MS Access数据导入到SQL Server中
- 22. 如何使用SQLCMD将MicroSoft Access数据库(mdb)导入SQL Express文件?
- 23. Excel导入到数据库使用C#
- 24. 使用Excel 2016将Excel文件导入Access
- 25. 使用Excel作为前端将特定的Access表数据导入到Excel中
- 26. Excel VBA导入数据到现有的Access数据库
- 27. 如何使用codeigniter将csv文件数据导入到mysql数据库中?
- 28. 使用DAO和WHERE子句将Excel中的数据导入Access
- 29. 拆分文本文件导入Access数据库使用SQL
- 30. 从Access表导入数据到Excel表
更长的方法是使用COM将其保存为csv,然后解析CSV文件并验证它。 – ComputerSaysNo