1
使用Delphi编写数据库应用程序并需要将数据从访问数据库导出到Excel电子表格。我可以使用docmd.spreadsheet管理反向序列(导入excel来访问)。工程100%。但我不知道如何设置导出参数。我需要帮助。如何使用Delphi将Access数据库导出到Excel
使用Delphi编写数据库应用程序并需要将数据从访问数据库导出到Excel电子表格。我可以使用docmd.spreadsheet管理反向序列(导入excel来访问)。工程100%。但我不知道如何设置导出参数。我需要帮助。如何使用Delphi将Access数据库导出到Excel
请检查此示例代码,我也建议您阅读DoCmd.TransferSpreadsheet Method
文档。
{$APPTYPE CONSOLE}
uses
SysUtils,
ActiveX,
ComObj;
procedure ExportDataAccess(const AccessDb, TableName, ExcelFileName:String);
Const
acQuitSaveAll = $00000001;
acExport = $00000001;
acSpreadsheetTypeExcel9 = $00000008;
acSpreadsheetTypeExcel12 = $00000009;
var
LAccess : OleVariant;
begin
//create the COM Object
LAccess := CreateOleObject('Access.Application');
//open the access database
LAccess.OpenCurrentDatabase(AccessDb);
//export the data
LAccess.DoCmd.TransferSpreadsheet(acExport, acSpreadsheetTypeExcel9, TableName, ExcelFileName, True);
LAccess.CloseCurrentDatabase;
LAccess.Quit(1);
end;
begin
try
CoInitialize(nil);
try
ExportDataAccess('C:\Datos\Database1.accdb','Sales','C:\Datos\MyExcelFile.xls');
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.
我用你以前的答案导入一个Excel它工作100%。我预计出口应该如何运作。但它没有正常工作。你对这个问题的回答与我最初编码的相同。问题是1):如果程序导出到一个不存在的文件,它会创建一个文件。但是,当我使用Excel打开文件时,会出现错误:Excel无法打开文件'Çodes.xlsx',因为文件格式或文件扩展名无效。验证文件是否已损坏,文件扩展名是否与文件的格式相匹配。你能帮我吗? – Bossa
如果你想使用2007 excel格式,你必须传递'acSpreadsheetTypeExcel12Xml'的值,该值定义为'acSpreadsheetTypeExcel12Xml = $ 0000000A;'否则只需将文件扩展名重命名为xls。 – RRUZ