|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Импорт данных из Excel в базу данных Access
Доброго всем дня.
Для облегчения работы потребовалось сделать импорт данных из Excel в базу данных Access (.mdb). И практически сразу возник вопрос, при открытии файла Excel выдает ошибку Невозможно найти устанавливаемый ISAM. Файл для импорта открываю так Код:
var OpenDialog : TOpenDialog; FName1, FName2: string; fullFileName : string; Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); begin ADOConnection1.Connected:=False; Windows.MessageBeep(MB_ICONINFORMATION); OpenDialog:= TOpenDialog.Create(self); OpenDialog.InitialDir := ''; OpenDialog.Filter := 'Microsoft Excel 2003 (*.xls)|*.xls'; if OpenDialog.Execute then begin FName1 := OpenDialog.FileName; LabeledEdit1.Text:=ExtractFileName(FName1); ADOConnection1.ConnectionString:= 'Provider=Microsoft.ACE.OLEDB.12.0;' + 'Data Source='+LabeledEdit1.Text +';' + 'Extended Properties=Excel Files;'+ 'DriverId=1046;'+ 'MaxBufferSize=2048;'+ 'PageTimeout=5'; ADOConnection1.Connected:=True; end; end; |
#2
|
||||
|
||||
Ну и правильно ругается.
Код:
Extended Properties=Excel Files Замените на: Код:
Extended Properties=Excel 12.0 Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 27.06.2014 в 19:09. |
#3
|
||||
|
||||
Страдалецъ, нет разницы. Указал
Код:
Extended Properties=Excel 12.0 Вот строка подключения ADOConnection1.Connected выбрана непосредственно в Delphi Код:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;DBQ=d:\Мои документы\Delphi программы\Работа с ADO\Импорт с Excel\Мой проект\2.xls;DefaultDir=d:d:\Мои документы\Delphi программы\Работа с ADO\Импорт с Excel\Мой проект;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;" |
#5
|
||||
|
||||
Код:
Const Excel2007Connection = 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=%s'; Var AdoConnection: TAdoConnection; begin AdoConnection := TAdoConnection.Create(nil); AdoConnection.ConnectionString := Format(Excel2007Connection, ['d:\Мои документы\Delphi программы\Работа с ADO\Импорт с Excel\Мой проект\2.xls']); AdoConnection.Open; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
fofka (28.06.2014)
|
#6
|
||||
|
||||
Страдалецъ, Благодарю за помощь. Все заработало. Сделал как Вы подсказали и все пошло. Импорт данных работает. Для подключения Excel взял Ваш код, а импорт из примера.
Код:
implementation Const Excel2007Connection = 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=%s'; {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); begin ADOConnection1.Connected:=False; Windows.MessageBeep(MB_ICONINFORMATION); OpenDialog:= TOpenDialog.Create(self); OpenDialog.InitialDir := ''; OpenDialog.Filter := 'Microsoft Excel 2003 (*.xls)|*.xls'; if OpenDialog.Execute then begin FName1 := OpenDialog.FileName; LabeledEdit1.Text:=ExtractFileName(FName1); ADOConnection1.ConnectionString := Format(Excel2007Connection, [''+LabeledEdit1.Text +'']); ADOConnection1.Connected:=True; try AdoVer:=ADOConnection1.Provider; AdoConnection1.Connected:=true; except ADOConnection1.Connected:=false; showmessage('ООшибка подключения.'+ #13 + 'Ожидаемая версия"' + AdoVer + '"провайдера отличается от текущей'); Application.Terminate; end; end; end; |