ADO и Excel
Как-то слышал такую вещь: можно передавать данные в excel через адо, причем это должно быть быстрее оле во много раз. Есть ли у кого - нибудь пример по этой теме? Если есть - скиньте, его мне на [email]mval@front.ru[/email]
Добрый день.
Как-то слышал такую вещь: можно передавать данные в excel через адо, причем это должно быть быстрее оле во много раз. Есть ли у кого - нибудь пример по этой теме? Если есть - скиньте, его мне на [email]mval@front.ru[/email]
Да такая вещь действительно есть и работает она в 100 раз быстрее. Пример выслал, будут вопросы обращайся.
Да такая вещь действительно есть и работает она в 100 раз быстрее. Пример выслал, будут вопросы обращайся.
если не тежело пример прикрепи, к мессаге к форуме, чтобы все могли отценить.
если не тежело пример прикрепи, к мессаге к форуме, чтобы все могли отценить.
Вот пример кода 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();
}
в первой строке, где копифайл пишет ошибка: E2040 Declaration Terminated Incorectly.. раньше с командой копифайл не сталкивался и компонента такого тоже не нашел, так что в чем косяк не знаю, подскажите что не так?