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

Вниз

Импорт в Excel.   Найти похожие ветки 

 
Behemoth   (2003-08-14 11:09) [0]

1. Приведенный ниже код работает медленно. Есть ли другие предложения?
2. После закрытия этой проги и Excel в памяти остается процесс Excel. Как мне его правильно уничтожить в программе

MSExcel:=CreateOleObject("Excel.Application");
MSExcel.WorkBooks.Add;
MSExcel.Sheets["Лист1"].Select;
Query1.First;
for i:=1 to Query1.RecordCount do
begin
for k:=0 to Query1.Fields.Count-1 do
MSExcel.ActiveSheet.Cells[i+1,k+1].value:=Query1.Fields[k].AsString;
Query1.Next;
end;


 
Vlad   (2003-08-14 11:20) [1]

Создавай массив типа вариант (VarArrayCreate), заполняй его значениями из датасета, а затем такой массив одним действием кладется на лист Excel, в определенный Range


 
Smithson   (2003-08-14 11:52) [2]

Либо сперва все данные упаковываешь в строковую перемнную (граница ячейки - ;, граница строки - #10#13), а потом через клипбоард помещаешь в эксель. Это еще быстрее, чем variants, но задать range не получится.


 
Spawn   (2003-08-14 11:53) [3]

2. Если ты имеешь ввиду, что тебе надо его закрыть, то
MSExcel.Quit;
MSExcel:=UnAssigned;


 
Oleg_   (2003-08-14 11:55) [4]

Я делал так же как Smithson только разделял границы ячеек #9.


 
Behemoth   (2003-08-14 12:55) [5]

Вот так не получается:

var Dataset1:Variant;
Rec:Array of variant;
Dataset1 := VarArrayCreate([0,Query1.RecordCount-1],varVariant);
SetLength(Rec, Query1.Fields.Count);
for i:=1 to Query1.RecordCount do
begin
for k:=0 to Query1.Fields.Count-1 do
Rec[k]:=Query1.Fields[k].AsString;
Dataset1[i-1] := VarArrayOf(Rec);
Query1.Next;
end;
MSExcel.Range["A2:H3"+IntToStr(Query1.RecordCount)].Value:=Dataset1;

Вроде массивы то заполняются, а данные не вставляются.

2. А как вы с клипбоардом работаете?
3. to Spawn: Я хочу чтобы после импорта моя программа была отдельно, а Excel отдельно. Сейчас, если закрыть прогу и потом закрыть Excel, в памяти остается процесс EXCEL.EXE. Сколько раз вызывался CreateOleObject стоко процессов и висит.


 
Alibaba   (2003-08-14 13:59) [6]

http://www.afalinasoft.com/rus/index.html


 
Behemoth   (2003-08-14 14:29) [7]

Всем спасибо. Всё сделал.
Только на всякий случай как поместить строки в Cliboard?


 
mma   (2003-08-14 16:07) [8]

Подскажите пожалуйста, как произвести ту же операцию импорта только для StringGrid? Проблема в следущем:
после экспорта в Excel поля stringGrid в которых были только цифры в Excel видны как float.
Подскажите, пожалуйста, как от этого избавиться


 
dtm   (2003-08-14 16:13) [9]

Выставь этому столбцу формат "@" - тогда вроде будет как строковый


 
Карелин Артем   (2003-08-14 16:49) [10]

Мои замечания:
1. Query1.RecordCount не всегда равно реальному числу записей. Это число прочитанных записей. Лучше делать цикл while not query1.eof do....
2. Не всегда пользователям нравится замусоривание буфера. Можно сделать текстовых файл с разделителями и натравить на него ексель.


 
mma   (2003-08-15 05:35) [11]

отвечу сам себе, нужно к строке добавить #39
тогда все будет в порядке


 
Spawn   (2003-08-15 06:43) [12]

Behemoth ©
В Clipboard можно поместить, если у соответствующих компонентов есть эти методы(например, у TMemo методом CopyToClipboard), ну если нету, то реализовать самому. А в Excel-е поищи методы работы с буфером обмена. Я точно не помню где они, но называться должны соответственно Cut, Copy, Paste - можешь посмортеть компонент TExcelApplication и посмортеть к какому обьекту относятся данные методы(я частенько так делаю, если не знаю где находится то или инное интересующее меня свойство).



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

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

Наверх





Память: 0.47 MB
Время: 0.008 c
14-81878
McSimm
2003-08-08 10:39
2003.08.25
Объявление! Новый почтовый адрес.


8-81849
Alex3000
2003-04-26 12:32
2003.08.25
Анимированный GIF???


14-81957
Nikolay M.
2003-08-08 11:25
2003.08.25
Из объяснительных... :)))


1-81612
Felk
2003-08-13 10:11
2003.08.25
Перехват вывода


1-81772
HardClubber
2003-08-14 13:46
2003.08.25
Получить имя файла





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский