Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ADO и Excel

830
10 сентября 2003 года
MVal
76 / / 17.10.2002
Добрый день.
Как-то слышал такую вещь: можно передавать данные в excel через адо, причем это должно быть быстрее оле во много раз. Есть ли у кого - нибудь пример по этой теме? Если есть - скиньте, его мне на [email]mval@front.ru[/email]
469
10 сентября 2003 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by MVal
Добрый день.
Как-то слышал такую вещь: можно передавать данные в excel через адо, причем это должно быть быстрее оле во много раз. Есть ли у кого - нибудь пример по этой теме? Если есть - скиньте, его мне на [email]mval@front.ru[/email]



Да такая вещь действительно есть и работает она в 100 раз быстрее. Пример выслал, будут вопросы обращайся.

250
10 сентября 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by Sli


Да такая вещь действительно есть и работает она в 100 раз быстрее. Пример выслал, будут вопросы обращайся.


если не тежело пример прикрепи, к мессаге к форуме, чтобы все могли отценить.

469
11 сентября 2003 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by Joker

если не тежело пример прикрепи, к мессаге к форуме, чтобы все могли отценить.




Вот пример кода ADO Excel правда я достаю данные из DevExpress
QuantumGrid, но думаю кому надо разберуться.
Данный кусок работает у клиента уже пол года. Для сравнения тотже отчет с испотльзованием OLE на машинах клиента выкидываеться в Excel не менее 40 минут, через ADO 40-60 секунд.

// файл rest.xls это шаблон отчета.

{ CopyFile((ExtractFilePath(Application->ExeName)+"rest.xls").c_str(),"c:\\rest.xls",false);
ADOConnection1->Connected=true;
ADOTable1->Active=true;
ADOTable1->FindLast();
int rowcount= cxGrid1DBTableView1->DataController->RowCount;
int colcount= cxGrid1DBTableView1->ColumnCount;

ProgressBar1->Max=rowcount;
for(int i=0; i < rowcount; i++)
{

ADOTable1->Append();
for(int j=0; j< colcount;j++)
{
String str;
Variant value = cxGrid1DBTableView1->ViewData->Rows->Values[j];
if(value.IsNull()) str = " "; else str=value;
ADOTable1->Fields->FieldByNumber(j+1)->AsString=str;

}
ADOTable1->Post();
ProgressBar1->Position=i;

}
ADOTable1->Active=false;
ADOConnection1->Connected=false;
ExcelInit("c:\\rest.xls");
if(!App.IsEmpty())App.OlePropertySet("Visible",true);


Sh.Clear();
App.Clear();
}

47K
10 марта 2009 года
Deft
3 / / 10.03.2009
странно, н оу меня этот код не работает...
в первой строке, где копифайл пишет ошибка: E2040 Declaration Terminated Incorectly.. раньше с командой копифайл не сталкивался и компонента такого тоже не нашел, так что в чем косяк не знаю, подскажите что не так?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог