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

Вниз

Распечатать много листов, шаблон дать менять юзеру   Найти похожие ветки 

 
SQLEXPRESS   (2011-07-07 13:16) [0]

Недолго думая, прикрутил Word.
Лучше что-то чем ниже посоветуете?

   SaveChanges := wdDoNotSaveChanges;
   W := CreateOleObject("Word.Application");
   W.DisplayAlerts := False;
   i := 0;
   while not(qReestr.Eof) do
   begin
     D := W.Documents.Open(MyPath + "DD.doc");
     ReplaceByRecord(qReestr);
     W.PrintOut;
     D.Close(SaveChanges);
     inc(i);
     qReestr.Next;
   end;
   W.Quit;

procedure TfrmReestr.ReplaceW(This, ToThis: string);
begin
 W.Selection.Find.Text := This;
 W.Selection.Find.Replacement.Text := ToThis;
 W.Selection.Find.Execute(Replace:=2);
end;

procedure TfrmReestr.ReplaceByRecord(Q: TOraQuery);
var
 i: Integer;
begin
 for i := 0 to Q.FieldCount - 1 do
 begin
   ReplaceW("#" + Q.Fields[i].FieldName + "#", Q.Fields[i].AsString);
 end;
end;


 
Slym ©   (2011-07-07 14:46) [1]

видел такое...
заполнение таблицы в пару сотен страниц, а такое бывает (например выписка движений по счету за год) формируется пару часов...
удвоение числа результирующих страниц вызывает учетверение времени формирования т.к. слова в ворде не индексированы и поиск идет по всеему постоянно растущему тексту


 
RWolf ©   (2011-07-07 14:52) [2]

готовим шаблон в RTF.
при формировании отчёта загружаем шаблон в память и заменяем шаблонные слова на осмысленный текст, после чего выгружаем документ во временный файл и распечатываем.


 
RWolf ©   (2011-07-07 14:54) [3]

а вообще, FastReport включает в себя редактор отчётов, например.


 
Slym ©   (2011-07-07 14:58) [4]

ускорить заполнение таблицы можно ограничив поиск последней строкой
примерно так (не проверял)

                  Selection.StartOf Unit:=wdRow
                  Selection.SelectRow
                  With Selection.Find
                       .Text =
                       .Replacement.Text =
                       .Forward = True
                       .Wrap = wdFindContinue
                       .Format = False
                       .MatchCase = False
                       .MatchWholeWord = False
                       .MatchWildcards = False
                       .MatchSoundsLike = False
                       .MatchAllWordForms = False
                  End With
                  Selection.Find.Execute Replace:=wdReplaceOne


 
RWolf ©   (2011-07-07 15:02) [5]


>  [4]

я, кстати, сталкивался с ограничением на длину строки замены (около 250 символов).
по крайней мере, в Word 2003.


 
Slym ©   (2011-07-07 15:07) [6]

RWolf ©   (07.07.11 14:52) [2]
или well formed html с xml трансформом и ccs


 
Inovet ©   (2011-07-07 15:51) [7]

> [3] RWolf ©   (07.07.11 14:54)
> а вообще, FastReport включает в себя редактор отчётов, например.

Пользователь его испортит скорее, чем отредактирует, тут всё же надо понимать принципы.


 
Медвежонок Пятачок ©   (2011-07-07 15:58) [8]

html шаблон строки с маркерами атрибутов
+ охватывающий шаблон.
данные тянуть php или чем-то еще, делая реплейс маркерами.
готовый хтмл пиннануть в pdf (для php есть фриварные библиотеки )


 
Inovet ©   (2011-07-07 16:17) [9]

А как будет выглядеть изменение шаблона юзером? Он же и Ворде всё испортит.


 
Медвежонок Пятачок ©   (2011-07-07 16:20) [10]

я бы сделал для себя возможность менять шаблон наиболее бесгеморным для меня способом. А юзер присылал бы мне вордовый образец/фрагмент чего он хочет видеть сегодня.


 
Inovet ©   (2011-07-07 16:23) [11]

> [10] Медвежонок Пятачок ©   (07.07.11 16:20)
> я бы сделал для себя возможность менять шаблон наиболее бесгеморным для меня способом

Вот и я о том же. Что ФР, что Ворд всё равно надо понимать, что делаешь. Тогда ФР лучше, имхо.


 
SQLEXPRESS   (2011-07-07 16:26) [12]

ясно, спасибо.
FR-дизайнер , html - наши это не потянут, однозначно.
Хотя FR, конечно, быстрее будет.. но, чувствую, замучают приставалками на правку.

Не, думаю, правильно у меня.

Шаблон - один лист, но юзер выбирает какой из 5-6 возможных, + сам добавляет если надо, тупо создав в соотв. папке вордовский документ, вставив метки #NAME# куда надо в тексте.

только они должны 1:1 соответствовать именам полей запроса,
но ничего, посмотрят как в оригинале, поставят, если им очень нужно будет


 
SQLEXPRESS   (2011-07-07 16:30) [13]


> А как будет выглядеть изменение шаблона юзером? Он же и
> Ворде всё испортит.

ну и ССЗБ, тогда бери образец-readonly, правь заново..


> я бы сделал для себя возможность менять шаблон наиболее
> бесгеморным для меня способом. А юзер присылал бы мне вордовый
> образец/фрагмент чего он хочет видеть сегодня.

штук по 10  будут слать первые несколько дней.
Сидеть и править? а работать кто будет? :)


 
b z   (2011-07-07 17:04) [14]


> папке вордовский документ, вставив метки #NAME# куда надо
> в тексте.
В ворде есть понятия шаблонов, полей, коментариев, и и.п. штучек.


 
SQLEXPRESS   (2011-07-08 11:36) [15]

Подскажите, пожалуйста, какие-нибудь команды, для ускорения работы

(
я сам пока тоже буду искать, просто очень надо побыстрее что бы было..
прошу прощения, знаю что спешку нельзя показывать, даже если очень надо.
Но мне ОООчень нужно, в обед буду сдаваться, надо что б побыстрее отработал этот момент..
)

 W := CreateOleObject("Word.Application");
 W.DisplayAlerts := False; // что-то вроде этого

в Exccell есть, например,
 E.EnableEvents := False;

что-то такое же


 
DiamondShark ©   (2011-07-08 11:54) [16]

Справка ворда, ключевое слово "слияние"


 
Dennis I. Komarov ©   (2011-07-08 12:14) [17]


> Шаблон - один лист, но юзер выбирает какой из 5-6 возможных,
>  + сам добавляет если надо, тупо создав в соотв. папке вордовский
> документ, вставив метки #NAME# куда надо в тексте.

*dot[x] + Bookmakrs?


 
SQLEXPRESS   (2011-07-08 12:36) [18]

вот чего нашел
 W.Options.CheckSpellingAsYouType := False;
 W.Options.CheckGrammarAsYouType := False;
вроде, быстрее стало,
еще пока поищу. Кто знает - пишите, не стесняйтесь :)


> *dot[x] + Bookmakrs?

да зачем?
там одна страница - был бы текст, было бы да, по закладкам и меткам.
А на одной странице и replace хорош


 
b z   (2011-07-08 13:56) [19]

Документ надо заполнять скрытым. Отображать, если надо, только в конце.


 
SQLEXPRESS   (2011-07-08 14:52) [20]


> Документ надо заполнять скрытым.

это понятно.

Короче, сдался. 200 листов за 2,5 минуты.  Скорость устроила.



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

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

Наверх




Память: 0.52 MB
Время: 0.008 c
2-1310636801
Cobalt
2011-07-14 13:46
2011.11.06
Как работает CharInSet?


15-1310280412
Дмитрий С
2011-07-10 10:46
2011.11.06
Как правильно называются следующие вещи:


2-1311139968
Anthony
2011-07-20 09:32
2011.11.06
Убрать мерцание в RichEdit


2-1310773155
Германн
2011-07-16 03:39
2011.11.06
С чего бы возникает OnResize после OnShow


15-1310134286
Очень злой
2011-07-08 18:11
2011.11.06
Синхронизации папки пользователя при ее перенаправлении.