Форум: "Основная";
Текущий архив: 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.02 c