Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 01:29   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию Импорт из Excel в БД Delphi

Здравствуйте ребята. Задача такой, что надо загрузить из Excel файле данных в БД . смотрел несколько пример и думал как это реализовать .
Я думаю решать это задача так .

1 . Подключиться через ADO в Excel
2. копировать все данных из одного Query на второе вот так

Код:
ADOTable2.insert;
ADOTable2.FieldByName('Фамилия').AsString :=ADOTable1.FieldByName('Фамилия').AsString;
ADOTable2.Post;
Начинаю делать.

А ) ADOConnection1 из свойстве ConnesctionString пишу
Код:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.xls;Extended Properties=Excel 8.0;
Б) ADOQuery1 из свойстве SQL пишу
Код:
SELECT * FROM [Лист1$]
Компоненти ( ADOConnection1, ADOQuery1, DataSource1) между собой подключены DBGrid отображает запись который в Excel . Но при запуске программа выдает такую ошибку , что ( Файл уже открыт ) пожалуйста помогите обойдись из этого ошибку, или Может вас есть пример, (импорт данных из Excel в БД ) Пожалуйста ребята помогите решать это задачу
Изображения
Тип файла: jpg Без имени-1.jpg (123.1 Кб, 144 просмотров)
Тип файла: jpg Без имени-2.jpg (35.9 Кб, 125 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 10.12.2013, 09:29   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В строке соединения не хватает параметров, на днях была подобная тема, поищите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.12.2013, 13:16   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

ексельку отрыли уже что не понятно? а открыл его сама (или сам?) дельфи, закрой дельфи запусти программу - проблема исчезла?
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 11.12.2013, 17:18   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Огромное спасибо ребята . За ваш совет , За ваши поддержку Я люблю вас . Я помню, вы меня много раз ( поддерживали , подтолкнули )
// *********************************** **********************
Для формата xls Excel 97 - 2003 открываю так

Код:
procedure TfrmMain.Open_ExcelClick(Sender: TObject);
var
strConn: WideString;
begin
  if OpenDialog1.Execute then
  begin
   strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +  'Data Source=' + OpenDialog1.FileName + ';' + 'Mode=Share Deny None;Extended Properties=Excel 8.0;';
   ADOConnection1.Connected:=False;
   ADOConnection1.ConnectionString:=strConn;
  try
   ADOConnection1.Open;
   qryExcel.Open;
  except
    ShowMessage('Ошибка Excel '+OpenDialog1.FileName+' !');
  raise;
 end;
 end;
end;
end.
А для формата xlsx Excel 2007

Код:
procedure TfrmMain.Button1Click(Sender: TObject);
var
strConn: WideString;
begin
  if OpenDialog1.Execute then
  begin
   strConn:='Provider=Microsoft.ACE.OLEDB.12.0;' +  'Data Source=' + OpenDialog1.FileName + ';' + 'Mode=Share Deny None;Extended Properties="Excel 12.0 Macro;HDR=YES";;';
   ADOConnection1.Connected:=False;
   ADOConnection1.ConnectionString:=strConn;
  try
   ADOConnection1.Open;
   qryExcel.Open;
  except
    ShowMessage('Ошибка Excel '+OpenDialog1.FileName+' !');
  raise;
 end;
 end;

end;
qryExcel = это ADOQuery . из свойства SQL пишем

Код:
 SELECT * FROM [Лист1$]
Копировать из одного Query на второе знаем :D так решаю это задачу
xxbesoxx вне форума Ответить с цитированием
Старый 11.12.2013, 23:08   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Копировать из одного Query на второе знаем :D так решаю это задачу
Не все так просто как я думал.... Не как не получается копировать

qryExcel = это то Adoquery который открывает Excel

qryImpExcel = Это то Adoquery который подключение в БД в таблицу. делаю Insert но не хочет

1.
Код:
     if  qryExcel.Active = true  then
        begin
          qryImpExcel.Insert;
          qryImpExcel.FieldByName('nalichie').AsString := qryExcel.FieldByName('Дилер').AsString ;
          qryImpExcel.Post;
        end
2.
Код:
        qryImpExcel.Close;
        qryImpExcel.SQL.Text := ' INSERT INTO Таблица1 ( Поля1 ) SELECT Поля1 FROM  [Лист1$] ';
        qryImpExcel.Open;
обычно из одного таблице копировать на второе делаю так

SQL
Код:
INSERT INTO Таблица1 (Поля1) SELECT Поля1 FROM Таблица2
Вопрос : Как копировать пожалуйста помогите ребята
xxbesoxx вне форума Ответить с цитированием
Старый 12.12.2013, 11:22   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
qryImpExcel.Close;
qryImpExcel.SQL.Text := ' INSERT INTO Таблица1 ( Поля1 ) VALUES (:nalichie)';
if  qryExcel.Active = true  then
        begin
          qryImpExcel.Parameters.ParamByName('nalichie').Value := qryExcel.FieldByName('Дилер').AsString ;
          qryImpExcel.ExecSQL;
        end
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 12.12.2013, 12:44   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
Код:
qryImpExcel.Close;
qryImpExcel.SQL.Text := ' INSERT INTO Таблица1 ( Поля1 ) VALUES (:nalichie)';
if  qryExcel.Active = true  then
        begin
          qryImpExcel.Parameters.ParamByName('nalichie').Value := qryExcel.FieldByName('Дилер').AsString ;
          qryImpExcel.ExecSQL;
        end
Огромное спасибо . Но я не понял где я допускаю ошибку . Пожалуйста ребята посмотрите . Как копировать это строки который получаем из Excel. Для теста создал проект Delphi 7 и БД Access . еще для пример

Лист Microsoft Office Excel.xls и Лист Microsoft Office Excel.xlsx

Пожалуйста ребята помогите .
Вложения
Тип файла: rar IMP_Excel.rar (328.2 Кб, 43 просмотров)
Тип файла: rar Лист Microsoft Office Excel_xls.rar (6.1 Кб, 38 просмотров)
Тип файла: rar Лист Microsoft Office Excel_xlsx.rar (10.1 Кб, 41 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 12.12.2013, 13:28   #8
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

ну как-то так
Вложения
Тип файла: zip IMP_Excel.zip (12.6 Кб, 164 просмотров)
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 12.12.2013, 13:34   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Slym Огромное спасибо ... Что работает я вижу . Здорова Буду код разбирать ....
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт данных из Excel в Excel макросом vnmz Microsoft Office Excel 2 04.03.2011 18:04
Импорт из excel Djuleta86 Microsoft Office Access 6 12.09.2010 16:26
Импорт данных их Excel в Delphi betirsolt БД в Delphi 2 17.01.2010 14:25