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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: edward_K, m0p3e, Модераторы

Ответить
VarankDA
Постоянный гость
Сообщения: 54
Зарегистрирован: 15 фев 2011, 12:00
Откуда: Киров, ЗАО "Красный якорь"
Контактная информация:

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

Сообщение VarankDA »

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

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

Подскажите способ или документацию по использованию функций из библиотеки GalXLSLib.dll.
mikl628
Сообщения: 5
Зарегистрирован: 26 дек 2005, 18:54

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

Сообщение 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.
VarankDA
Постоянный гость
Сообщения: 54
Зарегистрирован: 15 фев 2011, 12:00
Откуда: Киров, ЗАО "Красный якорь"
Контактная информация:

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

Сообщение VarankDA »

Такой вариант не проходит.
VarankDA
Постоянный гость
Сообщения: 54
Зарегистрирован: 15 фев 2011, 12:00
Откуда: Киров, ЗАО "Красный якорь"
Контактная информация:

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

Сообщение 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.
Den
Местный житель
Сообщения: 1847
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

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

Сообщение Den »

VarankDA
Постоянный гость
Сообщения: 54
Зарегистрирован: 15 фев 2011, 12:00
Откуда: Киров, ЗАО "Красный якорь"
Контактная информация:

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

Сообщение 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
Ответить