Необходимо выгрузить большой объем данных, но в формате XLSx с использованием самописного интерфейса.
Функции из библиотеки ExcelLib3X.dll работают очень медленно.
Googl подсказывает, что для быстрой выгрузки нужно использовать функции из библиотеки GalXLSLib.dll.
Сам такие решения не применял.
Подскажите способ или документацию по использованию функций из библиотеки GalXLSLib.dll.
Быстрая выгрузка в Ексель
Модераторы: edward_K, m0p3e, Модераторы
Re: Быстрая выгрузка в Ексель
Попробуйте выгрузку в текстовый файл, его потом открывайте с помощью excel пример
.Create view do as
select * from katsopr,basedoc,stepdoc
where
((
KatSoprNrec ==Katsopr.nrec and
KatSopr.cStepDoc ==StepDoc.nrec and
StepDoc.cBaseDoc ==BaseDoc.nrec
));
.Create View spDo as
select * from spstep,spsopr,katSopr
where
((
KatSoprNrec == KatSopr.nrec and
KatSopr.nrec == spSopr.cSopr and
spSopr.cspStep == spStep.nrec
));
.begin
deletefile('c:\temp\reestr1.txt');
handle:=CreateFileHandle('c:\temp\reestr1.txt');
file_Openfile('c:\temp\reestr1.txt',stCReate,handle);
File_WriteLn('katSopr.nrec|DSopr|Nsopr|Организация|BaseDoc.nrec|SpStep.nrec|spSopr.nrec|spSopr.cmcusl|SpSopr.cparty',handle);
end.
.{
.{
.{table spDo //Спецификация накладной
.begin
File_WriteLine(KatSoprNrec+'|',handle);
File_WriteLine(DateSopr+'|',handle);
File_WriteLine(NumSopr+'|',handle);
File_WriteLine(OrgName+'|',handle);
if do.getFirst=TsOk
File_WriteLine(do.BaseDoc.nrec+'|',handle)
else
File_WriteLine('|',handle)
File_WriteLine(spDo.spStep.nrec+'|',handle);
File_WriteLine(spDo.spSopr.nrec+'|',handle);
File_WriteLine(spDo.spSopr.cmcusl+'|',handle);
File_WriteLine(spDo.spSopr.cparty+'|',handle);
File_WriteLn('',handle)
end.
.}
.}
.}
.begin
file_close(handle);
end.
.Create view do as
select * from katsopr,basedoc,stepdoc
where
((
KatSoprNrec ==Katsopr.nrec and
KatSopr.cStepDoc ==StepDoc.nrec and
StepDoc.cBaseDoc ==BaseDoc.nrec
));
.Create View spDo as
select * from spstep,spsopr,katSopr
where
((
KatSoprNrec == KatSopr.nrec and
KatSopr.nrec == spSopr.cSopr and
spSopr.cspStep == spStep.nrec
));
.begin
deletefile('c:\temp\reestr1.txt');
handle:=CreateFileHandle('c:\temp\reestr1.txt');
file_Openfile('c:\temp\reestr1.txt',stCReate,handle);
File_WriteLn('katSopr.nrec|DSopr|Nsopr|Организация|BaseDoc.nrec|SpStep.nrec|spSopr.nrec|spSopr.cmcusl|SpSopr.cparty',handle);
end.
.{
.{
.{table spDo //Спецификация накладной
.begin
File_WriteLine(KatSoprNrec+'|',handle);
File_WriteLine(DateSopr+'|',handle);
File_WriteLine(NumSopr+'|',handle);
File_WriteLine(OrgName+'|',handle);
if do.getFirst=TsOk
File_WriteLine(do.BaseDoc.nrec+'|',handle)
else
File_WriteLine('|',handle)
File_WriteLine(spDo.spStep.nrec+'|',handle);
File_WriteLine(spDo.spSopr.nrec+'|',handle);
File_WriteLine(spDo.spSopr.cmcusl+'|',handle);
File_WriteLine(spDo.spSopr.cparty+'|',handle);
File_WriteLn('',handle)
end.
.}
.}
.}
.begin
file_close(handle);
end.
-
VarankDA
- Постоянный гость
- Сообщения: 54
- Зарегистрирован: 15 фев 2011, 12:00
- Откуда: Киров, ЗАО "Красный якорь"
- Контактная информация:
Re: Быстрая выгрузка в Ексель
Такой вариант не проходит.
-
VarankDA
- Постоянный гость
- Сообщения: 54
- Зарегистрирован: 15 фев 2011, 12:00
- Откуда: Киров, ЗАО "Красный якорь"
- Контактная информация:
Re: Быстрая выгрузка в Ексель
Подскажите как вызвать функции из интерфейса F_XLSREP::comIGalXLSLib
Исходник выгрузки:
Исходник выгрузки:
interface Excel_Test 'Выгрузка в Ексель' cyan;
handleevent
cmInit:
{
begin
CREATEEXCELWITHTEMPLATE('C:\tmp\Книга6.xlsx',true);
SETACTIVESHEETBYNAME('Лист1');
SETCELLSTRINGVALUE('Test',1,1,1,1);
KILLEXCEL
end;
}
end;
end.
-
VarankDA
- Постоянный гость
- Сообщения: 54
- Зарегистрирован: 15 фев 2011, 12:00
- Откуда: Киров, ЗАО "Красный якорь"
- Контактная информация:
Re: Быстрая выгрузка в Ексель
Спасибо помогло!
Может кому пригодится:
Может кому пригодится:
.form '!Test_Excel7'
.ard
.var
Row,Col : Longint;
i,j,a : Longint;
.endvar
.begin
a:=1;
xlCreateNewExcelWithTemplate('C:\tmp\Книга6.xlsx',true);
xlSetActiveSheetByName('Лист1');
XLCREATEMATRIX(100,10);
Row:=1;Col:=1;
for (i:=0;i<100;i:=i+1)
begin
for (j:=0;j<10;j:=j+1)
begin
xlDoWriteToMatrix(Row,Col,a);
a:=a+1;
Col:=Col+1;
end;
Col:=1;
Row:=Row+1;
end;
xlWriteMatrixToExcel(5,1);
xlKillExcel;
end.
Test_3
.endform