Текущий архив: 2007.11.04;
Скачать: CL | DM;
Вниз
из Excel в Access Найти похожие ветки
← →
Kley (2007-06-26 21:20) [0]Здравствуйте мне нужно загрузить данные из Excel в Access
использую следующий код (поячеечная загрузка):
var
ea:variant;
row,count:integer;
i: word;
begin
ea:=CreateOleObject("Excel.Application"); //Задубасить Ole обьект типа Eксель
ea.Workbooks.Open(opendialog1.FileName); //Открываем нужную нам книгу
ea.Visible:=false;// Скрываем, если конечно нужно
row:=ea.ActiveSheet.UsedRange.Rows.Count;// Смотрим сколько заюзаных строк
for i:=1 to row do begin // Начинаем цикл
adotable2.Append; // Добавляем в таблицу новую запись
// сдесь вносим в таблицу каждое значение отдельно
adotable2.Fields[0].Value:=ea.Sheets[1].Cells[i,1].Text;
adotable2.Fields[1].Value:=ea.Sheets[1].Cells[i,2].Text;
adotable2.Fields[2].Value:=ea.Sheets[1].Cells[i,3].Text;
adotable2.Fields[3].Value:=ea.Sheets[1].Cells[i,4].Text;
adotable2.Fields[4].Value:=ea.Sheets[1].Cells[i,5].Text;
adotable2.Fields[5].Value:=ea.Sheets[1].Cells[i,6].Text;
adotable2.Fields[6].Value:=ea.Sheets[1].Cells[i,7].Text;
adotable2.Fields[7].Value:=ea.Sheets[1].Cells[i,8].Text;
application.ProcessMessages; // ЭТО ОБЯЗАТЕЛЬНО, ЕСЛИ НЕ ХОТИМ ВИСЕТЬВО ВРЕМЯ ВЫПОЛНЕНИЯ!!!!!!!!!!!!
end;
adotable2.Post; // Сохраняем полученое в базе
ea.quit; // Выходим из Екселя
adotable2.First; // Переходим на первую запись
end;
в таблице 6000 записей отрабатывает очень долго.
посоветуйте как ускорить процесс.
← →
Megabyte © (2007-06-27 08:52) [1]А если попробовать к Экселю обращаться через ADO, как к БД? Там есть замечательный метод CopyFromRecordSet
← →
YurikGL © (2007-06-28 21:27) [2]Если это нужно однократно - можно через буфер обмена перебросить... У меня получалось гораздо быстрее, чем построчно.
По коду - лучше использовать запрос "insert into" для каждой строчки Excel-я и сразу добавлять всю строку. Уверен, что будет быстрее.
Страницы: 1 вся ветка
Текущий архив: 2007.11.04;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.037 c