Страница 1 из 1

Быстрая выгрузка в Ексель

Добавлено: 11 авг 2026, 17:01
VarankDA
Необходимо выгрузить большой объем данных, но в формате XLSx с использованием самописного интерфейса.
Функции из библиотеки ExcelLib3X.dll работают очень медленно.

Googl подсказывает, что для быстрой выгрузки нужно использовать функции из библиотеки GalXLSLib.dll.
Сам такие решения не применял.

Подскажите способ или документацию по использованию функций из библиотеки GalXLSLib.dll.

Re: Быстрая выгрузка в Ексель

Добавлено: 13 авг 2026, 10:51
mikl628
Попробуйте выгрузку в текстовый файл, его потом открывайте с помощью 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.

Re: Быстрая выгрузка в Ексель

Добавлено: 13 авг 2026, 12:06
VarankDA
Такой вариант не проходит.

Re: Быстрая выгрузка в Ексель

Добавлено: 13 авг 2026, 18:18
VarankDA
Подскажите как вызвать функции из интерфейса 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.

Re: Быстрая выгрузка в Ексель

Добавлено: 14 авг 2026, 21:12
Den

Re: Быстрая выгрузка в Ексель

Добавлено: 19 авг 2026, 11:05
VarankDA
Спасибо помогло!
Может кому пригодится:
.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