На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
  
> Формирование документов MS Office из программы
    Очень часто программы формируют документы word, excel и т.п. Я знаю только 1 способ эффективной работы с ними:
    1 Создать заранее шаблон с неизменным текстом
    2 В шаблон вставить подменные переменные - например %ФИО_АБОНЕНТА%
    3 Программа создает документ на основе шаблона и подменяет подменные переменные на нужные.

    Есть-ли какие-то ещё способы формирования подобных документов? Как например формируются документы в ворд\экселе точные копии экрана программы? Т.е. программа показала в себе форму, эта-же форма попала в вордовский файл.
      Printscreen? :-?

      Начали писАть про документ а закончили копией с экрана.
      Вообще точную копию можно сделать либо как картинку либо что-то типа документа pdf. Я например в своей программе создаю документ (правда HTML), даю посмотреть/распечатать через стандартный webbrowser, а далее при желании, можно этот же документ экспортировать в файл.
        Он наверно имел в виду, что программа показывает превьюшку будущего документа. А потом формирует документ, который выглдит, как эта превьюшка.

        PDF не всегда удобен. Бывает нужно сформировать документ, а потом его как-то доработать руками. С PDF это сделать затруднительно.

        Есть библиотеки, позволяющие сформировать нужный файл. Но практически это та же работа с шаблоном, только спрятанная внутрь программы. Программа не читает шаблон, меняет текст и пишет файл, а сразу пишет с нужным текстом.

        Шаблоны особенно удобно использовать, если формируется файл типа RTF (Rich Text Format), его можно обработать любой программой обработки текста, вообще без использования каких-либо библиотек.
          Цитата amk @
          Программа не читает шаблон, меняет текст и пишет файл, а сразу пишет с нужным текстом.

          Так там куча форматирования - цвет, шрифт и т.д.


          Цитата DIS @
          ачали писАть про документ а закончили копией с экрана.

          Да, имел в виду превью.
            Ответ от kosten:
            ^D^ima, ты вроде с 1С работаешь? Вот там печатную форму можно сохранить как документ word или excel.

            Цитата ^D^ima @
            1 Создать заранее шаблон с неизменным текстом
            2 В шаблон вставить подменные переменные - например %ФИО_АБОНЕНТА%
            3 Программа создает документ на основе шаблона и подменяет подменные переменные на нужные.

            Ты описал самый простой случай. Представь, что в шаблоне у тебя есть таблица. Количество строк заранее не известно. Как будешь действовать?
              Цитата OpenGL @
              Ответ от kosten:
              ^D^ima, ты вроде с 1С работаешь? Вот там печатную форму можно сохранить как документ word или excel.

              Вопрос не про 1С, а о разработке софта языком высокого уровня.


              Цитата OpenGL @
              Ты описал самый простой случай. Представь, что в шаблоне у тебя есть таблица. Количество строк заранее не известно. Как будешь действовать?

              Так это и есть мой вопрос. Возможно есть какие-то print-report'ы, где все делается само, и люди не изобретают велосипед, а пользуются готовыми решениями?
                Цитата ^D^ima @
                Так это и есть мой вопрос. Возможно есть какие-то print-report'ы, где все делается само, и люди не изобретают велосипед, а пользуются готовыми решениями?

                Не знаю :unsure: У нас в компании пользуются своим велосипедом, формирующим документ по шаблону через COM. Он позволяет вставлять не только строки, но и содержимое файлов, более того, это делается рекурсивно - если во вставляемом документе тоже есть теги, которые надо заменить - они заменятся. Конкретно таблицы c динамическим количеством строк генерируются в html.
                Совет от kosten-а тоже сводится к COM :)
                  Цитата OpenGL @
                  формирующим документ по шаблону через COM.

                  Цитата OpenGL @
                  Совет от kosten-а тоже сводится к COM


                  Так я так и написал в первом посте, по другому с вордом я не знаю ка ещё можно взаимодействовать.

                  В общем ответ - через шаблон с подменой текста, как понимаю
                    Цитата OpenGL @
                    Количество строк заранее не известно. Как будешь действовать?

                    ...ActiveDocument->Tables->Item(N) - выбираем N-ю таблицу а у таблицы есть методы добавления новых строк.

                    Добавлено
                    Можно через закладку по диапазону , накладываем на все колонки таблицы.
                      Цитата ^D^ima @
                      В общем ответ - через шаблон с подменой текста, как понимаю

                      Не только подмена, но и с использованием других возможностей, которые тебе дает COM-объект.

                      Цитата ^D^ima @
                      Вопрос не про 1С, а о разработке софта языком высокого уровня.

                      Ты решил обидеть 1С?
                        Ешхё можно использовать сторонние библиотеки, например Aspose (Aspose Word, Aspose Cells, Aspose PDF etc)
                          Гуру VBA могут пояснить какой подход в заполнении вордовского документа лучше - DocVariables или поиск и замена текстовых меток?
                            Цитата kosten @
                            Ты решил обидеть 1С?

                            :D Я имел в виду универсальным языком высого уровня(delphi, C)
                              Вариант создать XML/HTML установленного формата и открыть его как документ офиса?
                              используя "разметку" создать RTF документ (формат ЕМНИП открытый)
                              Сообщение отредактировано: Павел Калугин -
                                Цитата Павел Калугин @
                                XML

                                XML не имеет форматирования внутри
                                  Хорошо, XML нет разметки хотя для Ёкселя это не очень и обязательно а в ворде, насколько я краем уха слышал, все есть
                                  А HTML?
                                  Сформировать тугамент и открыть вордом...
                                  Сообщение отредактировано: Павел Калугин -
                                    Цитата Павел Калугин @
                                    Хорошо, XML нет разметки хотя для Ёкселя это не очень и обязательно а в ворде, насколько я краем уха слышал, все есть

                                    В XML только данные, обертка для них делается каждым приложением своя, а html красиво без css не сделать.
                                    Я вспомнил, есть такие вещи типа fast report, т.е. не надо изобретать велосипед, все украдено до нас
                                      Можно еще и cristal report вспомнить.
                                      Кстати на Королевсве Дельфи тмного статей на тему как формировать тугаменты в экселе.
                                      Сообщение отредактировано: Павел Калугин -
                                        Есть такая штука как OpenXML - либа для формирования docx, xlsx и прочих "икс-файлов" для нового офиса (версии 2007+).

                                        Проблема лишь в том, что он очень низкоуровневый, типа <param name="параметр">значение</param>, т.е. xml-нечто в формате OpenXML Scheme может запросто отвергаться Офисом т.к. он ждёт другого порядка параметров, или пропущен обязательный в данной ситуации параметр (т.е. бизнес-логика в схеме не описана).

                                        Есть вроде бы либа-помогайка с шутливым названием ClosedXML, но я её не щупал, а вместо этого делал нужный документ в Ворде или Экселе, сохранял в docx/xlsx и затем изучал перечень и порядок сгенерённых параметров со значениями (некоторые символы там ещё искейпятся или игнорятся, кстати, типа спецсимволов в имени эксель-листа). Затем по образу и подобию делал свои XML-шаблоны.
                                          Цитата Mr.Delphist @
                                          Проблема лишь в том, что он очень низкоуровневый

                                          это ужасно геморойный метод.
                                            Цитата ^D^ima @
                                            это ужасно геморойный метод.

                                            Что делать, пероральных лекарств мне неизвестно :D
                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                            0 пользователей:


                                            Рейтинг@Mail.ru
                                            [ Script execution time: 0,0468 ]   [ 15 queries used ]   [ Generated: 19.03.24, 08:55 GMT ]