Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Вниз

Экспорт данных в Excel   Найти похожие ветки 

 
Barbariska   (2004-02-09 08:26) [0]

Подскажите, плиз, как из ADOQuery отправить данные в Excel не по одной записи, а всем скопом.


 
Семен Сорокин   (2004-02-09 09:47) [1]

сохранить в dbf\txt\mdb\xml - формате , а затем открыть в Excel"e.


 
Palladin   (2004-02-09 09:49) [2]

Получаем данные и формируем буффер отправки

var
strBuffer:string;
nRecCounter:integer;

strBuffer:="";
if (not q.IsEmpty) and (q.RecordCount=0) then nRecCounter:=0
else nRecCounter:=-1;
while not q.eof do
begin
for i:=0 to q.FieldCount-1 do strBuffer:=strBuffer+q.Fields[i].AsString+#9;
if q.FieldCount<>0 then strBuffer[Length(srtBuffer)]:=#13
else strBuffer:=strBuffer+#13;
strBuffer:=strBuffer+#10;
if nRecCounter<>-1 then nRecCounter:=nRecCounter+1;
q.next;
end;


подключаемся к Excel через DDE
var
xlDDE:TDDEClientConv;
nLeftLTCell,nTopLTCell,nRightRBCell,nBottomRBCell:integer;

xlDDE:=TDDEClientConv.Create(nil);
xlDDE.SetLink("EXCEL", strSheetName);
nLeftLTCell:=1;
nTopLTCell:=1;
nRightRBCell:=nLeftRBCell+q.FieldCount;
if nRecCounter=-1 then nBottomRBCell:=nTopLTCell+q.RecordCount
else nBottomRBCell:=nTopLTCell+nRecCounter;
xlDDE.PokeData(OLEVariant(xlApp.Range[IntToExcelColumn(nLeftLTCell)+IntToStr(nTopLTCell),IntToExcelColumn(nRightRBCell)+ IntToStr(nBottomLTCell)]).Address[ReferenceStyle:=xlR1C1], pchar(buffer));
xlDDE.free;


Функцию IntToExcelColumn оставлю на домашнее задание. Она должна уметь переводить число 1 в строку "A", а число 32 в строку "AF";


 
zamkom   (2004-02-09 09:50) [3]

Всем скопом ты их не передаш завяжи их в цикл и передавай по одному. Вот пример:

procedure TForm1.Button1Click(Sender: TObject);
var
xlap,xl:variant;
i : integer;
begin
XLap:= CreateOLEObject("Excel.Application");
xlap.workbooks.add;
xl:=xlap.Workbooks[1].Sheets[1];
For i:=1 to ADOQuery.RecordCount do
begin
xl.Cells[i,1].Value:=ADOQuery.FIeldByName("qwerty").AsString ;
end;

xlap.ActiveWorkbook.SaveAs("123.xls");
xlap.quit;
end;


 
Palladin   (2004-02-09 09:53) [4]


> zamkom © (09.02.04 09:50) [3]

А Вы я смотрю богатым опытом обладаете...


 
Polevi   (2004-02-09 09:58) [5]

>Palladin © (09.02.04 09:49) [2]
не пользовался вашим способом, он будет работать при любом объеме данных ?
я использую PasteSpecial, и там может не хватить памяти под буфер, приходится бить данные на блоки


 
zamkom   (2004-02-09 10:02) [6]

Palladin © (09.02.04 09:53) [4]
Богатым опытом не обладаю, но в силу своих скромных возможностей делаю, что могу.


 
Palladin   (2004-02-09 10:04) [7]


> Polevi © (09.02.04 09:58) [5]

однажды в порядке эксперимента передавал 75 мегобайт... и хоть бы что... правда шел дикий своп... самой оперативки мало было... но никто никуда не вылетел, все окончилось хорошо...
при предаче естестенно нужно учитывать что все таки максимальное количество строк имеет ограничение в самом эксель... так же возникают проблемы при передаче Даты/Времени, эксель их воспринимает как целочисленные значения, но это исправляется предварительной установкой формата ячеек в Дата... иногда случается наоборот целочисленные значения эксель пытается показать как дату время... решается это тем же самым способом...
считаю, что через DDE один из наибыстрейших способов пердачи больших массивов...


 
Barbariska   (2004-02-09 10:06) [8]

Семен Сорокин, может еще подскажешь как сохранить в формате dbf/txt и проч.

Zamkom, спасибо так и сделала, просто очень большая выборка и перебором очень долго.

Palladin, спасибо, попробую. Правда не очень уверена в собственных силах, может разберусь :)))

в любом случае всем спасибо)))


 
Polevi   (2004-02-09 10:33) [9]

а вообще на королевстве есть хорошая статься на эту тему


 
Polevi   (2004-02-09 10:38) [10]

http://www.delphikingdom.ru/asp/viewitem.asp?UrlItem=/helloworld/excel3.htm



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.017 c
1-53464
DAnton
2004-02-06 09:18
2004.02.17
Не могу убрать BalloonHint.


1-53612
дурак
2004-02-09 14:41
2004.02.17
q3text


14-53758
Dzhuffin_Hally
2004-01-24 22:53
2004.02.17
Люди. Плз помогите програмку написать.


1-53477
Dmitriy
2004-02-06 12:48
2004.02.17
Цикл по Edit ам...


1-53529
][ncognito
2004-01-31 00:12
2004.02.17
Как распечатать таблицу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский