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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 17:39   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию из экселя в БД

Вопрос.
Есть экзель файл. Пример -
Имя____|Данные|
Объект 1|0.5____|
Объект 2|0.3____|
Объект 3|0.75___|
Объект 4|0.12___|
Нужно добавить данные в БД таким образом сделав проверку, что, если определенный столбец называется "Данные", а столбец Имя=Объект 1, то добавить в БД 0.5.
С чего можно начать? Чего то нет мыслей. Была одна - начать с поиска значений в экселе, а что дальше не догоняю..

Последний раз редактировалось kate158; 02.12.2009 в 10:07.
kate158 вне форума Ответить с цитированием
Старый 01.12.2009, 17:47   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Сообщение от kate158 Посмотреть сообщение
Вопрос.
Есть экзель файл. Пример -
Имя____|Данные|
Объект 1|0.5____|
Объект 2|0.3____|
Объект 3|0.75___|
Объект 4|0.12___|
Нужно добавить данные в БД таким образом сделав проверку, что, если определенный столбец называется "Данные", а столбец Имя=Объект 1, то добавить в БД 0.5.
С чего можно начать? Чего то нет мыслей. Была одна - начать с поиска значений в экселе, а что дальше не догоняю..
Дальше, грузим нужную информацию циклом в MemData или в StringGrid...
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 01.12.2009, 17:53   #3
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

интересен именно момент, когда выполняются два условия поиска..
вот код мой.
Код:
  
var
    eee_:string ; 
    FindRange:variant ;
    E : Variant;
    i: integer;
  E  := CreateOleObject('Excel.Application');
  E.DisplayAlerts  := False;
  E.WorkBooks.Open(trim(Memo1.Lines[i]), ReadOnly:=True);
   try
   FindRange:=E.Cells.Find(What:='Данные');
   eee_:= FindRange.text ;
showmessage( eee_);
except
messagebox(handle,'Искомый текст не найден!','Внимание!',0) ;
end;
но это не то, что нужно...как выцепить значение, удовлетворяющее двум условиям поиска?

как добавить значение в БД на пересечении строки и столбца? кто нить знает?столбец и строка не задаются пользователем...

Последний раз редактировалось Stilet; 02.12.2009 в 11:54.
kate158 вне форума Ответить с цитированием
Старый 02.12.2009, 10:02   #4
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

не совсем понятны ваши вопросы...
посмотрите тут и есть такая книжка Программирование документов и приложений MS Office в Delphi [В. Корняков]
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 02.12.2009, 10:03   #5
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

эту книгу я знаю наизусть!я наверно плохо объясняю..смотрите 1 пост.
программа должна сначала определить в какой ячейке находится название столбца - "Данные". Затем определить,в какой строке находится значение "Объект1". И НА ИХ ПЕРЕСЕЧЕНИИ будет находится значение, которое добавляется в БД

Последний раз редактировалось kate158; 02.12.2009 в 10:10.
kate158 вне форума Ответить с цитированием
Старый 02.12.2009, 10:04   #6
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Сообщение от kate158 Посмотреть сообщение
эту книгу я знаю наизусть!
тогда посмотрите статьи в delphiworld, ссылку на которую я вам давал выше или напишите более подробно в чем суть вашего вопроса
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 02.12.2009, 10:19   #7
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

вот еще подробнее
Изображения
Тип файла: jpg 1.JPG (18.6 Кб, 49 просмотров)
kate158 вне форума Ответить с цитированием
Старый 02.12.2009, 10:50   #8
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Вот пример, делал давно, исправил под вас... разбирайтесь, будут вопросы задавайте! Здесь я записываю из Экселя в СтрингГрид.
Код:
    i := 1;
    j := 2;
    row := 1;

while Excel.Sheets[index_sheet].Cells[1,i].Value <> '' do//бежим по 1ой строке
    begin
      //если 'Имя' то берем строку и ищем в ней нужные нам столбцы
      if (Excel.Sheets[index_sheet].Cells[1,i].Value = 'Имя') then
      begin
        while Excel.Sheets[index_sheet].Cells[j,i].Text <> '' do//до тех пор пока не конец
        begin//проверка не очень хорошая придумайте по оригинальнее
          if (Excel.Sheets[index_sheet].Cells[j,i].Value = 'Объект 1')or(Excel.Sheets[index_sheet].Cells[j,i].Value = 'Объект 2') then
          begin
              k := 1;
              StringGrid.RowCount := row+1;
              StringGrid.Cells[0,row] := Excel.Sheets[index_sheet].Cells[j,i].Text;//пишем заголовок
              while Excel.Sheets[index_sheet].Cells[1,k].Text<>'' do
              begin
                //ищем столбец
                if Excel.Sheets[index_sheet].Cells[1,k].Value = 'Данные' then
                  StringGrid.Cells[1,row] := Excel.Sheets[index_sheet].Cells[j,k].Text;//записываем
                inc(k);
              end;
              inc(row);
          end;
          inc(j);
        end;
        break;
      end;
      inc(i);
    end;
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 02.12.2009 в 10:54.
quit вне форума Ответить с цитированием
Старый 02.12.2009, 11:08   #9
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

quit, спасибо за помощь. но:
1. зачем нагружать программу стринггридами, нужно будет обработать около сотни файлов, думаю, она зависнет очень надолго.
2. что есть "row+1"?
ведь у меня в таблице на месте столбца "Данные" может быть другой столбец или несколько, со значениями, ктр мне не нужны.

Последний раз редактировалось kate158; 02.12.2009 в 11:18.
kate158 вне форума Ответить с цитированием
Старый 02.12.2009, 11:19   #10
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Сообщение от kate158 Посмотреть сообщение
1. зачем нагружать программу стринггридами, нужно будет обработать около сотни файлов, думаю, она зависнет очень надолго.
Это просто пример вывода значение ячейки Excel в StringGrid, так сказать, для наглядности
Цитата:
Сообщение от kate158 Посмотреть сообщение
2. что есть "row+1"?
ведь у меня в таблице на месте столбца "Данные" может быть другой столбец, со значениями, ктр мне не нужны.
это увеличение количество строк при добавлении значения столбца "данные", так как если Вы не укажите для СтрингГрида значение строк заранее, до записи в него, могут возникнуть проблемы с записью в не существующую строку... объяснил коряво, но думаю суть ясна..
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ипорт из экселя в акссес Власов А.С. БД в Delphi 30 17.09.2009 12:51
Перенос форм из Экселя в Ворд Nash1 Microsoft Office Word 5 07.07.2009 06:32
Перенести таблицы Экселя в Ворд Nash1 Фриланс 5 02.07.2009 09:46
из экселя в БД Shark2112 Microsoft Office Excel 1 16.10.2007 08:04
защитить лист экселя от копирования nextaty Microsoft Office Excel 11 01.12.2006 21:27