Отчеты, как реализовать через Word ?
От: rusrr Россия  
Дата: 02.08.03 06:41
Оценка:
hi, great ALL!

В инете видел упоминания об отчетах реализованных как шаблоны(а мож и не шаблоны, может просто доки) ворда, экселя в которые программа-клиент забивает данные.

Ктонить сталкивался с таким? если да, то дайте плиз ссылки где данная тема раскрывется.


With best regards, Alexey.
20030802 17:28
Posted via RSDN NNTP Server 1.7 beta
Re: Отчеты, как реализовать через Word ?
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 02.08.03 08:10
Оценка:
"rusrr" <forum@rsdn.ru> wrote in message news:342767@news.rsdn.ru...
> hi, great ALL!
>
> В инете видел упоминания об отчетах реализованных как шаблоны(а мож и не
шаблоны, может просто доки) ворда, экселя в которые программа-клиент
забивает данные.
>
> Ктонить сталкивался с таким? если да, то дайте плиз ссылки где данная тема
раскрывется.

Я сталкивался. Ничего сложного там нет, конкретные вопросы есть?

>

> With best regards, Alexey.
> 20030802 17:28
Posted via RSDN NNTP Server 1.7 beta
Re[2]: Отчеты, как реализовать через Word ?
От: rusrr Россия  
Дата: 02.08.03 12:13
Оценка:
hi, Alexey!

> Я сталкивался. Ничего сложного там нет, конкретные вопросы есть?


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

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



With best regards, Alexey.
20030802 22:31
Posted via RSDN NNTP Server 1.7 beta
Re[3]: Отчеты, как реализовать через Word ?
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 03.08.03 09:06
Оценка:
"rusrr" <forum@rsdn.ru> wrote in message news:342851@news.rsdn.ru...
> hi, Alexey!
>
> > Я сталкивался. Ничего сложного там нет, конкретные вопросы есть?
>
> Я потому и попросил ссылку что пока конкретных вопросов нет, они появятся
после изучения материала или в процессе.

Вот именно, в процессе. Ок. Быстрый пример на VB.NET
На форме есть грид и кнопка "Launch Word"
Код:
    Dim dt As New DataTable()
    Dim wordApp As New Word.Application()
    Dim wordFields As Word.FormFields

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        dt.Columns.Add("col1", GetType(String))
        Dim dr As DataRow = dt.NewRow()
        dr("col1") = "cool"
        dt.Rows.Add(dr)
        dr = dt.NewRow()
        dr("col1") = "very cool"
        dt.Rows.Add(dr)
        DataGrid1.DataSource = dt
        'Datagrid1.DataMember =
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
        Dim wordDoc As Word.Document = wordApp.Documents.Add(CObj("rsdn
is.dot"))
        wordApp.Visible = True
        wordFields = wordDoc.FormFields()
        wordFields.Item(CObj("ТекстовоеПоле1")).Result() = _
            CStr(dt.Rows(DataGrid1.CurrentRowIndex).Item("col1"))
    End Sub

    Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object, ByVal e
As System.EventArgs) Handles DataGrid1.CurrentCellChanged
        wordFields.Item(CObj("ТекстовоеПоле1")).Result() = _
            CStr(dt.Rows(DataGrid1.CurrentRowIndex).Item("col1"))
    End Sub


В проекте установлена ссылка на СОМ сервер Word 9.0
В ворде создаем пустой документ и кидаем на него текстовое поле. Типа так:
Rsdn is [тут текстовое поле]
Затем сохраняем все это хозяйство как шаблон (*.dot). Из моего примера видно
что я его сохранид как "rsdn is.dot"
Ну и все — запускаем приложение, нажимаем кнопку и все! Можно перемещатся по
записям в гриде и соответствующее поле в щаблоне будет обновляться.
На сколько я знаю, можно к вордовому документу как-то датабиндинг
прикрутить, чтобы не писать всякие обработчики DataGrid1_CurrentCellChanged
(да и вообще, так правильней). Но это я уже тебе так сходу не вспомню.

> А так в принципе интересуют принципы(тувтАлогия однако) реализации

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

Это да. Плюс ко всему, можно на лету все это формировать: у FormFields есть
метод Add. Здесь уже нужно подробно доку по ворду смотреть.

>

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

Ну, собственно, я уже объяснил как: Создаешь нужный шаблон, например бланк
договора, вместо фамилий, типа договора и прочей фигни — вставляешь поля с
тулбара "Формы". Это могут быть поля ввода, поля со списком, чекбоксы.
После этого сохраняешь как шаблон и вперед!
Posted via RSDN NNTP Server 1.7 beta
Re[4]: Отчеты, как реализовать через Word ?
От: bizhan  
Дата: 04.08.03 01:03
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Вот именно, в процессе. Ок. Быстрый пример на VB.NET

AS>На форме есть грид и кнопка "Launch Word"

AS>Код:

AS>

AS>    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
AS>System.EventArgs) Handles MyBase.Load
AS>        dt.Columns.Add("col1", GetType(String))
AS>        Dim dr As DataRow = dt.NewRow()
AS>        dr("col1") = "cool"
AS>        dt.Rows.Add(dr)
AS>        dr = dt.NewRow()
AS>        dr("col1") = "very cool"
AS>        dt.Rows.Add(dr)
AS>        DataGrid1.DataSource = dt
AS>        'Datagrid1.DataMember =
AS>    End Sub

AS>



беее

Коварный вопрос — а причем здесь word template, если ты документ (content) делаешь руками?
Какие-то Rows.Add — это зачем? Получается, что ты весь отчет положил в приложение, а потом
его рисуешь. Можно рисовать на экране, можно на принтере, а можно в ворде. Это как в CR
динамически создавать статический (по полям) отчет.

Павел
Re[5]: Отчеты, как реализовать через Word ?
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 04.08.03 04:51
Оценка:
Hello, bizhan!
You wrote on Mon, 04 Aug 2003 01:03:12 GMT:

[]

b> беее


Не гони!

b> Коварный вопрос — а причем здесь word template, если ты документ

b> (content) делаешь руками? Какие-то Rows.Add — это зачем? Получается, что
b> ты весь отчет положил в приложение, а потом его рисуешь. Можно рисовать
b> на экране, можно на принтере, а можно в ворде. Это как в CR динамически
b> создавать статический (по полям) отчет.

Rows.Add для наглядности. Естественно, никто не будет создавать таблицы в
самой программе — данные обычно беруться из базы. Чтобы примерчик не
перегружать всякими соединениями и выборками я и создал таблицу в ручную.

А шаблон документа очень даже нужен. Вот делаешь ты какой-нить софт по
автоматизации банковской деятельности (например, регистрация договоров на
услуги по оплате городского телефона). Здесь просто необходим строгий бланк
и печатать его нужно для каждого клиента. И как ты это сделаешь без ворда?
(CR не в счет).

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

With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Re[6]: Отчеты, как реализовать через Word ?
От: Stepkh  
Дата: 04.08.03 07:31
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Hello, bizhan!


AS>А шаблон документа очень даже нужен. Вот делаешь ты какой-нить софт по

AS>автоматизации банковской деятельности (например, регистрация договоров на
AS>услуги по оплате городского телефона). Здесь просто необходим строгий бланк
AS>и печатать его нужно для каждого клиента. И как ты это сделаешь без ворда?
AS>(CR не в счет).

Ой, действительно, ну совсем никуда без ворда...
Резюме: чтобы сделать какойлибо документ у клиента должен стоять ворд и точка.
Re[6]: Отчеты, как реализовать через Word ?
От: bizhan  
Дата: 04.08.03 12:31
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Hello, bizhan!

AS>You wrote on Mon, 04 Aug 2003 01:03:12 GMT:

AS>[]


b>> беее


AS>Не гони!




AS>Rows.Add для наглядности. Естественно, никто не будет создавать таблицы в

AS>самой программе — данные обычно беруться из базы. Чтобы примерчик не
AS>перегружать всякими соединениями и выборками я и создал таблицу в ручную.

Коварный вопрос — а зачем тогда приводить это в пример, если никто никогда
так делать не будет?-))

AS>А шаблон документа очень даже нужен. Вот делаешь ты какой-нить софт по

AS>автоматизации банковской деятельности (например, регистрация договоров на
AS>услуги по оплате городского телефона). Здесь просто необходим строгий бланк
AS>и печатать его нужно для каждого клиента. И как ты это сделаешь без ворда?
AS>(CR не в счет).

Я о том же, что нужен шаблон. И с шаблоном надо работать, а не создавать документ
руками.

А еще другой вариант — html и печатать его через ie. А ie есть у всех.

Павел
Re[7]: Отчеты, как реализовать через Word ?
От: MNZ Россия  
Дата: 04.08.03 13:07
Оценка:
Здравствуйте, bizhan, Вы писали:

B>А еще другой вариант — html и печатать его через ie. А ie есть у всех.


А вы когда-нибудь печатали через ж..., простите, через IE? Те ещё прелести, надо сказать. Хотя как вариант, конечно, может и пойдёт. На любителя.
Re: Отчеты, как реализовать через Word ?
От: Ulyanitsky  
Дата: 04.08.03 14:23
Оценка:
Я сталкивался.
Я понимаю, что реклама здесь запрещена, но все же, если моредароты разрешат, ты увидищь мой ответ.

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

Если не найдешь исходники, связывайся со мной. ICQ: 161262935, Ulyanitsky@list.ru,
поделюсь по-братски.

Ульяницкий Николай
Re[4]: Отчеты, как реализовать через Word ?
От: AntoxaM  
Дата: 04.08.03 14:23
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Вот именно, в процессе. Ок. Быстрый пример на VB.NET

------покоцано-----
Интересно, насколько быстро все эти конструкции работают? Мне приходилось писать на VBA в самом ворде, и конвертилку для ёкселя. Впечатления мрачные — документ на пару страниц готовится больше минуты.
Re[8]: Отчеты, как реализовать через Word ?
От: bizhan  
Дата: 04.08.03 14:41
Оценка:
Здравствуйте, MNZ, Вы писали:

MNZ>Здравствуйте, bizhan, Вы писали:


B>>А еще другой вариант — html и печатать его через ie. А ie есть у всех.


MNZ>А вы когда-нибудь печатали через ж..., простите, через IE? Те ещё прелести, надо сказать. Хотя как вариант, конечно, может и пойдёт. На любителя.


Через ж* не печатал, а через IE печатал. И печатаю в одной программе.
Аккуратно готовится html (типа шаблона для ворда) и печатается.
Проблемы были только с печатью через netscape моих html.

Может быть вы их готовить не умеете?-)

Наш код такой:
— генерим html на диске
— ShellExecute(NULL,"print","report.html",NULL, work_dir,SW_SHOWNORMAL);
И печатает ведь.

Павел

p.s Я html привел вообще для примера. Если человек не хочет использовать нормальные репортеры, то что ворд,
что html — все едино.

У нас html был выбран потому, что таковы требования были — минимальный размер дистрибутива и максимальное
число конфигураций. Сопровождать правда это дело муторно, но работает.

Предупреждая вопросы — и через ворд печатали. И через шаблоны, и через word basic, и руками генерили, и из
ворда к базе ходили (к слову, самое удобное оказалось для пользователя).
Re[9]: Отчеты, как реализовать через Word ?
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 05.08.03 03:50
Оценка:
Hello, bizhan!
You wrote on Mon, 04 Aug 2003 14:41:13 GMT:

хъ

B>Предупреждая вопросы — и через ворд печатали. И через шаблоны, и через

word basic, и руками генерили, и из
B>ворда к базе ходили (к слову, самое удобное оказалось для пользователя).

Через MS Query?

With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Re[9]: Отчеты, как реализовать через Word ?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.08.03 08:10
Оценка:
Здравствуйте, bizhan, Вы писали:

B>Через ж* не печатал, а через IE печатал. И печатаю в одной программе.

B>Аккуратно готовится html (типа шаблона для ворда) и печатается.
B>Проблемы были только с печатью через netscape моих html.

B>Может быть вы их готовить не умеете?-)


B>Наш код такой:

B>- генерим html на диске
B>- ShellExecute(NULL,"print","report.html",NULL, work_dir,SW_SHOWNORMAL);
B>И печатает ведь.

Слушай, а как ты боролся с его любовью резать табличку посреди строки при межстраничном переносе?
... << RSDN@Home 1.1 alpha 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Отчеты, как реализовать через Word ?
От: AlexandrN Россия  
Дата: 05.08.03 09:47
Оценка:
Здравствуйте, rusrr, Вы писали:

R>hi, great ALL!

R>В инете видел упоминания об отчетах реализованных как шаблоны(а мож и не шаблоны, может просто доки) ворда, экселя в которые программа-клиент забивает данные.
R>Ктонить сталкивался с таким? если да, то дайте плиз ссылки где данная тема раскрывется.

R>With best regards, Alexey.

R>20030802 17:28

Если тебя в виде шаблонов отчётов устраивает RTF, то RepoRTF:http://www.vsi.ru/~apl/.
Причём там усё совершенно просто(до нельзя).
С уважением.
AlexandrN
Re[10]: Отчеты, как реализовать через Word ?
От: bizhan  
Дата: 05.08.03 12:19
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

B>>ворда к базе ходили (к слову, самое удобное оказалось для пользователя).


AS>Через MS Query?


Через odbc/ado. Может быть и не самое лучшее, но самое быстрое по внедрению было.

Павел
Re[10]: Отчеты, как реализовать через Word ?
От: bizhan  
Дата: 05.08.03 12:22
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Слушай, а как ты боролся с его любовью резать табличку посреди строки при межстраничном переносе?


Никак У нас такого не было

А резать он режет, это да.

Павел
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.