Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

Замучился уже   Найти похожие ветки 

 
Udaff ©   (2006-01-22 23:13) [0]

есть процедура которая заполняет шаблон-отчет в ворде
var
i : integer;
DataEl : POutputDataEl;
FileName : OleVariant;
WordApp1 : TWordApplication;
begin
//Tragets:
//  1 - File
//  2 - Image
//  3 - Printer
WordApp1 := TWordApplication.Create(self);
WordApp1.AutoConnect := true;
WordApp1.AutoQuit := true;
FileName := ExtractFilePath(Application.ExeName) + "Шаблон.doc";
WordApp1.Application.Documents.Open(FileName,EmptyParam,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
ViewForm1.ProgressBar1.Max := 10;
for i := 0 to OutputData.Count - 1 do
begin
  DataEl := OutputData.Items[i];

  if DataEl.Row > WordApp1.Application.ActiveDocument.Tables.Item(1).Rows.Count - 4 then
  begin
    WordApp1.Application.ActiveDocument.Tables.Item(1).Rows.Add(EmptyParam);
    if WordApp1.Application.ActiveDocument.Tables.Item(1).Rows.Count > 5 then
      WordApp1.Application.ActiveDocument.Tables.Item(1).Rows.Item(
        WordApp1.Application.ActiveDocument.Tables.Item(1).Rows.Count).Borders.
          Item(wdBorderTop).LineStyle := wdLineStyleNone;
  end;
  WordApp1.Application.ActiveDocument.Tables.Item(1).Cell(DataEl.Row + 4,DataEl.Col).
    Range.Text := DataEl.Data;
  ViewForm1.ProgressBar1.StepBy(1);
end;
WordApp1.Application.ActiveDocument.SaveAs(FileName,EmptyParam,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
end;


величина OutputData.Count обычно под 1000. и все это дело выполняется очень долго. как можно оптимизировать етот процесс ?


 
Palladin ©   (2006-01-23 02:45) [1]

никак


 
Джо ©   (2006-01-23 04:05) [2]

Вот, а говорят, что вывод отчетов в MS Office рулит :0)


 
QwertyKz ©   (2006-01-23 05:57) [3]

fastreport.ru
:)


 
Карелин Артем ©   (2006-01-23 06:19) [4]

Есть мое мнение, что на пару порядков это можно ускорить изменением самого подхода к работе с Вордом. Если в екселе можно было загнать 3000 страниц(10 000 строк 6 шрифтом) в одну переменную типа вариант и потом запостить ее в нужном месте, что давало примерно 1000-кратный прирост скорости по сравнению с поячееяным выводом, то для Ворда наверно имеет смысл накопить данные в переменной, потом одним вызовом Ворда передать эти данные в документ и преобразовать в таблицу.


 
Udaff ©   (2006-01-23 19:06) [5]

2Карелин Артем
суть ясна но как такой финт провернуть ? формат таблицы ворда ж не известен. может примерчик какой-нить есть ?


 
Карелин Артем ©   (2006-01-23 19:29) [6]

Лениво немного мне делать пример, давно не пишу на дельфи, да и через компонеyты не с офисом...
ConvertToTable - вот метод Ворда, который преобразует текст в таблицу.
По аське могу что-нибудь еще вспомнить... 217579306



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

Текущий архив: 2006.02.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.066 c
15-1137685587
Kerk
2006-01-19 18:46
2006.02.12
Просьба покритиковать логотип


4-1131699682
kay
2005-11-11 12:01
2006.02.12
Как добавить ссылку в Balloon tip? Или кнопку.


1-1136819121
utter
2006-01-09 18:05
2006.02.12
Удаление файлов по маске


1-1137070603
DimonNew
2006-01-12 15:56
2006.02.12
Офисные приложения


4-1133257179
баклан
2005-11-29 12:39
2006.02.12
Нажатие кнопок, вводе текста и прочее...