Как экспортировать базу данных Access в Excel с помощью Delphi

Я пишу приложение базы данных, используя Delphi, и мне нужно экспортировать данные из базы данных доступа в электронную таблицу Excel. Я мог управлять обратной последовательностью (импортировать Excel для доступа) с помощью docmd. spreadsheet. Работает на 100%. Но как настроить параметры экспорта я не знаю. Мне нужна помощь, пожалуйста.


person Bossa    schedule 08.05.2012    source источник


Ответы (1)


Проверьте этот образец кода. Также я рекомендую вам прочитать 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.
person RRUZ    schedule 08.05.2012
comment
Я использовал ваш предыдущий ответ при импорте Excel, и он сработал на 100%. Я ожидал от этого, как должен работать экспорт. Но он не работал должным образом. Ваш ответ на проблему такой же, как я изначально закодировал. Проблема 1): если программа экспортирует в файл, который еще не существует, она создает файл. Но когда я использую Excel для открытия файла, появляется сообщение об ошибке: Excel не может открыть файл «Çodes.xlsx», потому что формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла. Вы можете помочь? - person Bossa; 09.05.2012
comment
если вы хотите использовать формат Excel 2007, вы должны передать значение acSpreadsheetTypeExcel12Xml, которое определено как acSpreadsheetTypeExcel12Xml= $0000000A;, иначе просто переименуйте расширение файла в xls. - person RRUZ; 09.05.2012