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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 16:09   #1
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию Delphi, поиск в таблице Excel

Товарищи, перейду к сути сразу - есть таблица в Excel-е, через цикл обращаюсь к ячейкам в одном столбце, беру значение ячейки и сравниваю со своим. Перебор 2,5 тысяч ячеек занимает что то около 10 секунд. И 2,5 тысячи это далеко не предел, будет много и много больше.
Подскажите какой нибудь фокус.
Мне кажется что основная потеря времени происходит во время запроса/ответа. Может можно натравить сам Excel чтобы он поискал у себя на листе и вернул значение сразу?
Или как нибудь по другому может можно ускориться?
Я всё сейчас накрутил на простой текстовый файл, но с экселем и красивее и просто удобнее, дату например пихать в другой столбец.
BoozZzilla вне форума Ответить с цитированием
Старый 27.06.2011, 16:13   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

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

+ есть вроде какойто экспорт Аксель -> Акцесс.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 27.06.2011, 16:19   #3
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию вай

Я принимаю к вниманию конечно ваш совет. И я понимаю что он правильный. Но учиться работать с БД я буду не один месяц.
Оно мне потом пригодится, но может будут ещё предложения, может всё таки есть какой нить ход конём чтобы ррраз и всё готово?
BoozZzilla вне форума Ответить с цитированием
Старый 27.06.2011, 16:23   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

А что вообще надо делать с данными?
Какого они типа?

Есть также вариант загрузить, при старте, таблицу экселя в массив и работать уже с массивом.

Да пару дней всего то на БД надо потратить, а дальше только совершенствоваться )
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 27.06.2011, 16:25   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
   
  var Excel: Variant;
{.....}
 function FindExcel(const fnd: string; var aCol, aRow: Word): String;
      var
        wRange: OleVariant;
    begin
      try
        wRange:=Excel.Cells.Find(What:=fnd);
        
        aCol:=wRange.Column;
        aRow:=wRange.Row;
     
        Result:='';
      Except
        on E: Exception do
        Result:=E.Message;
      End;
    end;
(c) Light13
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 27.06.2011 в 16:31.
Mad_Cat вне форума Ответить с цитированием
Старый 27.06.2011, 16:30   #6
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

на двигатели набивается номер
дабы исключить повторение этого номера (в гибдд не поймут) надо его перед набивкой проверять на повторение.
если загружать в массив то есть вероятнось что комп ребутнется/глюканёт/его движком пришибут/метеорит упадёт/да мало ли что и всё - всё несохранённое пропадёт тогда. Потому рассматриваю сразу запись в таблицу, чтобы не хранить.
BoozZzilla вне форума Ответить с цитированием
Старый 27.06.2011, 16:39   #7
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Помне так это прямая дорога к БД, причём у тебя ерундовая таблица и разобраться с БД и как в ней чтото искать это максимум 2 вечера.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 27.06.2011, 16:49   #8
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Огроменное спасибо Mad Cat
всё летает при десяти тысячах записей

Valio также благодарю за активное участие
Я обязательно возьмусь за БД, вот тока время свободное появится и стимул
BoozZzilla вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БЫСТРЫЙ поиск в Excel средствами Delphi Smerch66 Общие вопросы Delphi 5 28.01.2011 15:33
Поиск по таблице maratmm Microsoft Office Excel 4 12.11.2010 12:45
Добавление данных из Delphi в таблице Excel Neket21 БД в Delphi 1 23.07.2009 08:06
Поиск в таблице k1r1ch Общие вопросы Delphi 1 30.06.2009 15:57
Delphi ->Excel->График по таблице->Delphi Avalonix БД в Delphi 2 30.10.2008 14:04