импорт данных из Excel
От: Аноним  
Дата: 08.11.05 12:10
Оценка:
Здравствуйте!

Надо реализовать импорт большого количества(несколько тысяч строк) данных из Excel в MS SQL.
Я написал программу на Delphi, которая через com считывает данные из *.xls и вносит их в MS SQL. Но программа работает медленно. (реализована через позднее связывание).
А именно: медленно работает считывание данных из Excel.

Пока ячейки не пустые, считываем данные и генерируем sql запрос.
Как только попадаются несколько подряд пустых ячеек, цикл прерывается и sql запрос отправляется на сервер.

Вопрос заключается в следующем:
Возможно ли как-нибудь по-другому искать конец документа?
Или по-другому делать импорт данных?

P.S. В документе xls всего одна таблица.


try
IRange := fTableExcelInfo.ExcelBook[idBook].ISheet.UsedRange[0];
Values := IRange.Value;
finally
IRange := nil;
end;

//Формирование SQL запроса
if DM.QuerySQL.Fields.FieldByNumber(1).AsInteger=0 then //Если нет записей в таблице, то выполняем добавление строк
begin
while string(Values[i,j])<>'' do //считываем поля, пока не всретим пустую ячейку
begin
sql.Add('Insert into xlsTempTab'+IntToStr(idBook)+'(id,['+Field+']) values ('+IntToStr(id)+','''+string(Values[i,j])+''')' );
inc(i);//проходим по строкам
inc(id);
FormImport.StatusBar1.Panels[1].Text:='ячейка: '+IntToStr(id);
FormImport.StatusBar1.Repaint;
end;
end
else //В противном случае, выполняем обновление строк
begin
while (string(Values[i,j])<>'') do //считываем поля, пока не всретим пустую ячейку
begin
sql.Add('Update xlsTempTab'+IntToStr(idBook)+' Set '+ '['+Field+']='''+string(Values[i,j])+''' ');
sql.Add('where id=id');// последняя строка запроса
inc(i);//проходим по строкам
inc(id);
FormImport.StatusBar1.Panels[1].Text:='ячейка: '+IntToStr(id);
FormImport.StatusBar1.Repaint;
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.