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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.035 c
3-1264733056
Diplomat
2010-01-29 05:44
2011.11.06
Работа двух пользователей в FireBird


2-1310647040
Gu
2011-07-14 16:37
2011.11.06
реестр


1-1272268693
Дмитрий Белькевич
2010-04-26 11:58
2011.11.06
PolyBezier, проходящий через заданные точки.


2-1310988971
Criptonik
2011-07-18 15:36
2011.11.06
Список шрифтов в combobox


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





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