Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:30 31.05.24 
Клубове/ Компютри и Интернет / Delphi Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: Делфи чрез АДО в ЕКСЕЛ [re: ADO]
Авторphp (Нерегистриран) 
Публикувано23.09.09 21:08  



Това което съм ти дал като вариант е формат за експорт към Ексел 97-2003 чрез работа с текстов файл. Имам го само на php и затова ти го пратих така.

Първия вариант който си ползвал е по-добър - използваш самия ексел да си генерира файл, недостатък е че трябва да имаш инсталиран офис на всеки комп на който пускаш програмата. За ускоряване - вместо директно писане в клетка и комуникация с ексела е по-добре всички данни да се "изсипят" в един масив:
DataArray:array of array of variant;
...

Ако данните са в TTable

ii:=0;
REPEAT
for jj:=0 to ColCount-1 do
case Table.FieldDefs[jj].DataType of
ftInteger:DataArray[ii,jj]:=Table.Fields[jj].AsInteger;
ftFloat:DataArray[ii,jj]:=Table.Fields[jj].AsFloat;
ftString:
begin
sTemp:=Table.Fields[jj].AsString;
DataArray[ii,jj]:=sTemp;
end;
ftDate:DataArray[ii,jj]:=Table.Fields[jj].AsString;
ftMemo:DataArray[ii,jj]:=Table.Fields[jj].AsString;
else
messagedlg('ii='+inttostr(ii)+' jj='+inttostr(jj),mterror,[mbOK],0);
end;
ii:=ii+1;
Table.Next();
UNTIL Table.Eof;

...

Worksheet.Range['A1',Worksheet.Cells.Item[CurrRowCount,ColCount]].Value :=DataArray;

Така става с пъти по-бързо, спрямо директни обръщения за всяка клетка.

Варианта с php пък е още по-бърз и универсален - не е необходим инсталиран ексел. Но ще трябва да се потрудиш да го преведеш на делфи, напр.:

function XLS_BOF():string;
var
sReturn:string;
begin
sReturn:='';
sReturn:=sReturn + #09+#08+#08+#00+#00+#00+#16+#00+#00+#00+#00+#00;
Result:=sReturn;
end;

Имай предвид, че в php както и в С подредбата старши-младши битове е противоположна от тази в Делфи - оттам е и разликата в превода.



Цялата тема
ТемаАвторПубликувано
* Делфи чрез АДО в ЕКСЕЛ ADO   21.09.09 14:31
. * Re: Делфи чрез АДО в ЕКСЕЛ php   22.09.09 21:02
. * Re: Делфи чрез АДО в ЕКСЕЛ ADO   23.09.09 09:35
. * Re: Делфи чрез АДО в ЕКСЕЛ php   23.09.09 21:08
. * Re: Делфи чрез АДО в ЕКСЕЛ ADO   24.09.09 10:05
. * Re: Делфи чрез АДО в ЕКСЕЛ Pechenia   24.09.09 15:20
. * Re: Делфи чрез АДО в ЕКСЕЛ ADO   24.09.09 21:00
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.