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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2008, 11:43   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию экспорт из Excel в БД

Как экспортировать содержимое Excel в таблицу access
есть ли в делфи 7 какие нибудб компоненты или функции?
нужно очень ... так как данные обновляются в Excel а работает приложение с access
Tanuska___:) вне форума Ответить с цитированием
Старый 22.08.2008, 20:39   #2
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Используйте OLE. Создаете экземпляр Excel, загружаете в него ваш файл, построчно перебираете в Excel строки и обновляете данные в таблице Access.
var XLS, Sheet: variant;
begin
XLS := CreateObject('Excel.Application');
XLS.WorkBooks.Open['Ваш файл.xls'];
Sheet := XLS.Sheets.Items[1];
DataSet.Append;
DataSet.FieldByName('FFFF').VAlue := Sheet.Cells[3, 4].Value;
......
DataSet.Post;
XLS.ActiveWorkbook.Close;
XLS.Application.Quit;
end;

Последний раз редактировалось Rik; 22.08.2008 в 20:50.
Rik вне форума Ответить с цитированием
Старый 27.08.2008, 11:57   #3
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию

я решила сделать немного по другому и перевела файл Excel в *.csv
и делаю как то так:
Код:
  for i := 8 to ListBox1.Count-1 do begin
     s := ListBox1.Items.Strings[i];
    for j := 1 to 13 do begin
      c := 0;
 while s[length(s)]<>';' do begin
        SetLength(s,length(s)-1);
        c := c+1;
      end;
        a[j] := Copy(ListBox1.Items.Strings[i],length(s)+1,c);
        SetLength(s,length(s)-1);
    end;
    a[14] := s;

  for k := 2 to ListBox2.Count-1 do begin
    s := ListBox2.Items.Strings[k];
    for k1 := 1 to 42 do begin
      c := 0;
 while s[length(s)]<>';' do begin
        SetLength(s,length(s)-1);
        c := c+1;
      end;
        b[k1] := Copy(ListBox2.Items.Strings[i],length(s)+1,c);
        SetLength(s,length(s)-1);
    end;
    b[43] := s;

 end;
 end;
2 листбокса так как нужно было использовать 2 файла
но теперь возникает зависание на выполнении этого блока ...
так как у меня получаеться разное колличество полей в строке
как можно решить этот вопрос?
помогите пожалусто
Tanuska___:) вне форума Ответить с цитированием
Старый 27.08.2008, 12:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все еще проще
В Экзеле есть импорт внешних данных. Там указывается провайдер, база, запрос. данные выдергиваются из БД, причем их можно переобновить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2008, 12:47   #5
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию

а поподробнее нельзя ?
Tanuska___:) вне форума Ответить с цитированием
Старый 27.08.2008, 13:38   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно.
Открываешь Экзель
1. Меню Данные-Импорт внешних данных
2. Создать
3. Выбереш тип (еси это Акцесс то ODBC выбирай)
4. Далее тип (БД MS Access)
5. Выбереш файл с базой
6. Выбераешь таблицу

Потом при желании можно даже SQL запрос сформировать в том же Экзеле )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2008, 15:03   #7
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию

помойму вы не читали мой вопрос так как я спрашивала не про то как из БД в екзель выгружать данные а совсем наоборот!!!!
Конечно за информацию спб может даже и пригодиться когда нибудь ...
но вопрос так и не разрешился
Tanuska___:) вне форума Ответить с цитированием
Старый 27.08.2008, 15:31   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну эта же операция только обратно.
подключи к ADOQuery провайдер ODBC создай в нем подключение к xls файлу и пусти запрос в котором таблицами будут листы, и получишь свою xls базу )

Я помоему уже тут выкладывал пример и описание подключения к Экзелю через ADO
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
экспорт отчета из Access 2007 в Excel. Возможно? perlik0 Microsoft Office Access 2 21.07.2008 13:18
Экспорт из Access в Excel, Экспорт из отчётов в таблицу Excel Kissedbythegod Microsoft Office Access 1 31.05.2008 22:15
экспорт таблицы Karl_Karlovi4 Общие вопросы Delphi 1 17.01.2008 13:33
Экспорт из Excel Nemo333 БД в Delphi 3 04.04.2007 15:53
Экспорт из Delphi в Excel micaell Общие вопросы Delphi 0 14.12.2006 01:24