0. artms 210 19.09.17 09:15 Сейчас в теме

Заполнение шаблона Word на сервере, без использования MS Office (docx -> zip -> xml). Предусмотрен вывод табличных частей

Шаблон в Word, управляемые формы. Создание заполнение документа Word (docx -> zip -> xml) по шаблону на сервере без использования MS Office. Предусмотрен вывод табличных частей.

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Лучшие комментарии
15. andrewbc 287 22.03.19 15:55 Сейчас в теме
Дорогой мой человек, спасибо огромное!

Сам начал было этим заниматься, но времени катастрофически в обрез.
Спас.
11 шаблонов за 1 сутки (с учетом адаптации кода под свою задачу - порядка 80-ти рассчитываемых параметров, включая несколько таблиц).
Все отрабатывает шикарно.

Замечания / предложения:
1. В ячейке таблицы только в первой строке остается перенос строк, в остальных перевод строки заменяется на пробел. (Понял, что не доработаны параграфы для дополнительных строк). Считаю, небольшая недоработка.
2. Нужно было вывести картинку - я не стал заморачиваться, в папке "\word\media\" просто перезаписывал файл "image1.jpeg". Понимаю, что нужно через таблицу связей обрабатывать, но времени нет. Может, есть решение?

А в остальном - все ок.
Могу прислать разумную рублевую благодарность после сдачи своего проекта (стукни в личку).
jONES1979; +1 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4409 04.10.17 23:49 Сейчас в теме
В конфигурации, разработанной нашей конторой по заказу одного госучреждения, прямое потрошение парсинг шаблонов Word для генерации договоров и прочего барахла работает с 2013 года. Только механизм вставки таблиц там довольно слабый. Скорее его нет, чем есть.
2. IsiKosta 726 07.10.17 07:17 Сейчас в теме
Спасибо! Наверняка пригодится для моей публикации https://infostart.ru/public/595984/
3. sytkosa 20.11.17 03:32 Сейчас в теме
С макетами сформированными в формате docx отличным от 2010 office будет работать? Например в макете созданным и сохраненным в 2016 word?
7. artms 210 27.09.18 09:04 Сейчас в теме +10 $m
4. Dimasik2007 412 15.02.18 15:59 Сейчас в теме
(0) Автору спасибо, формируется все быстро. Интгерировал с подсистемой "Печать" БСП. Также добавил возможность вставки картинки в документ (реализовал заменой картинки-эталона в папке media). Тестировал на 2010 офисе.
5. websamson 299 07.06.18 10:27 Сейчас в теме
Спасибо, работает! Только добавьте в описание, что в макете после параметров нужно добавлять пробел, иначе параметр не отображается на печати.
6. XelOla 17 11.09.18 14:59 Сейчас в теме
(5)
макете после параметров нужно добавлять пробел, иначе параметр не отображается на печати.

как это
8. artms 210 27.09.18 09:08 Сейчас в теме
(6) В Word пробел может записываться в XML специальным тегом (не всегда) . В некоторых ситуациях такое возникало, ошибку исправил, но пока не опубликовал решение в виду низкой популярности статьи. Проблема решается в шаблоне удалением строки и добавлением новой или копированием такой, где проблема не возникала.
28. artms 210 26.12.19 09:07 Сейчас в теме
20. artms 210 05.08.19 17:38 Сейчас в теме
9. KRIHA 83 12.11.18 11:05 Сейчас в теме
Спасибо вам большое, гражданин, за проделанную работу. Считаю ваше решение красивым, до сих пор в восторге от волшебства:

Функция СоединитьШаблоны(Теги,ПараметрыЗаполнения)

Всех благ!
P.S.
Использовал в https://infostart.ru/public/937082/
10. allexx 37 24.11.18 16:55 Сейчас в теме
Все хорошо работает. Одна только проблема - это ориентация Ландшафт. На последующих страницах можно вставлять разрывы, а вот как первую страницу заставить быть ландшафтной? Для себя выкрутился с помощью MSWord.Application.Selection.PageSetup.Orientation = 1, но это не совсем правильно. Остальные в портрете все делают что ли?
11. artms 210 21.12.18 15:53 Сейчас в теме
(10) Тестировал в ландшафте, проблем не возникло. Однако возможно рассматривается случай совмещения различных ориентации в одном документе, такой случай не тестировал.
12. allexx 37 22.12.18 15:19 Сейчас в теме
Может быть от версий офиса зависит, но я вроде на разных пробовал и результат один и тот же. Вот такая же проблема описывается https://answers.microsoft.com/en-us/msoffice/forum/all/selectioninsertfile-does-not-preserve-pagesetup/a393e023-6b92-4a91-a58d-3bd55c29c441
Когда дальше стал тестировать, то выяснилось, что и размеры полей берутся по умолчанию, а не из подготовленного документа.
13. artms 210 18.01.19 08:52 Сейчас в теме
(12) Нужны примеры, для исправления, но рейтинг разработки низкий нет смысла поддерживать.
14. user864530 05.02.19 12:25 Сейчас в теме
Вопрос? Как обработка работает с нижним и верхним колонтитулом и вставка разрывы страниц для изменения ориентации страницы в документе.
15. andrewbc 287 22.03.19 15:55 Сейчас в теме
Дорогой мой человек, спасибо огромное!

Сам начал было этим заниматься, но времени катастрофически в обрез.
Спас.
11 шаблонов за 1 сутки (с учетом адаптации кода под свою задачу - порядка 80-ти рассчитываемых параметров, включая несколько таблиц).
Все отрабатывает шикарно.

Замечания / предложения:
1. В ячейке таблицы только в первой строке остается перенос строк, в остальных перевод строки заменяется на пробел. (Понял, что не доработаны параграфы для дополнительных строк). Считаю, небольшая недоработка.
2. Нужно было вывести картинку - я не стал заморачиваться, в папке "\word\media\" просто перезаписывал файл "image1.jpeg". Понимаю, что нужно через таблицу связей обрабатывать, но времени нет. Может, есть решение?

А в остальном - все ок.
Могу прислать разумную рублевую благодарность после сдачи своего проекта (стукни в личку).
jONES1979; +1 Ответить
16. artms 210 28.03.19 15:13 Сейчас в теме
(15) Спасибо за отзыв.
Извини за недоработки. Пока обновлений нет из-за низкой популярности модуля, возможно будут позднее.
17. as7bs 178 24.07.19 13:00 Сейчас в теме
Добрый день. Подскажите, а можно ли реализовать в цикле вывод повторяющегося текста на отдельных листах? Нужно после основного текста вывести несколько приложений, в каждом текст(Заголовок) и таблица. Количество приложений заранее неизвестно.
18. as7bs 178 24.07.19 19:24 Сейчас в теме
(17) Реализовал, програмно обрабатывая шаблон файла после его загрузки в обработку, точнее ТегиСШаблонами полученные из шаблона файла. В цикле вставляю данные находящиеся между определенными метками в шаблоне(НачалоПовтораПриложений и ОкончаниеПовтораПриложений). Если есть более правильный или красивый вариант буду рад если расскажете.
19. artms 210 29.07.19 09:43 Сейчас в теме
(18) Добрый день. Такая задача не стояла. Делал бы аналогично. Разница могла быть только в реализации.
21. Euroset1 11 06.11.19 11:27 Сейчас в теме
Автору однозначно плюс за, по сути, мануал а ля "быстрый старт" по работе с Open XML. За этим способом, будущее, кстати. Не знаю, почему он так редок в использовании. Например, задача по рассылке сервером по расписанию кадровых документов сотрудникам решается только этим способом.
o.nikolaev; +1 Ответить
22. artms 210 06.11.19 15:35 Сейчас в теме
(21) На самом деле речь шла не о мануале, а о модуле, который решает проблемы: разбиение строки шаблона в xml, и заполнение таблиц Word.
23. Euroset1 11 06.11.19 20:41 Сейчас в теме
(22) если отказаться от спецсимволов и вводить в шаблон теги монотонно без копипоста и за один раз типа ДатаПолученияДоговора или НомерСтроки, то этот текст будет лежать в одном теге гарантированно. Мне норм. Не вижу основания использовать скобки для тегов теперь, обладая этими экспериментальными данными =)
24. artms 210 13.11.19 17:21 Сейчас в теме
(23) 1. Увы это не так, зависит от настроек авто форматирования, выделения ошибок и ещё чего то, что ещё не выяснил.
2. И опять же упустили момент вывода таблиц (могу добавлять строки из массива).
3. По Т.З. на создание модуля нужно было дать возможность через БСП изменять макет клиенту, увы ваш вариант на это не способен. Клиент легко разделит вам шаблон. Пробовал указанный способ, но увы Word и другие редакторы, обожают разбивать целые слова на части, что делает сложным настройку даже разработчику (потратил на эту схему прямой замены много часов, поскольку сложно найти обрубок шаблона в xml, а затем убрать лишние теги, которых часто не оправдано много).
29. odinassdeveloper 28.01.20 15:59 Сейчас в теме
(24)
увы Word и другие редакторы, обожают разбивать целые слова на части


вы имеете ввиду, что в исходном шаблоне *.docx текст типа "Оплата заказ не позднее [ДатаПолученияДоговора]" может быть раскидан частями по нескольким узлам XML в зависимости от того, как пользовтель оформлял шаблон?
30. artms 210 29.01.20 12:44 Сейчас в теме
(29) Не только. В Word есть проверка на грамматику и часть слова может быть выделена в отдельный блок, самим Word(ом).
25. o.nikolaev 197 19.11.19 18:41 Сейчас в теме
Подскажите, а если надо выполнять подстановку в колонтитулах, то аналогичным образом надо вначале разбирать xml в таблицу значений, а потом собирать?
26. artms 210 22.11.19 14:25 Сейчас в теме
(25) Такая задача не стояла, но посмотрел что необходимо сделать. Сейчас собирается разбирается только файл document.xml, а колонтитулы находятся в header1.xml,header2.xml,header3.xml. Предлагаю проверять наличие и менять аналогично document.xml файлы header1.xml,header2.xml,header3.xml.
По договоренности, могу сделать указанную доработку.
27. o.nikolaev 197 24.11.19 16:50 Сейчас в теме
(26) Спасибо. В конечном счете, все-таки стал использовать функции БСП. Если кому интересно, то в БСП 3.0 куча ошибок, которая нормально с форматом Open Office работать не позволяла. Но. С помощью расширения часть функций была взята из 3.01. После этого работа с шаблонами подстановки вида {v8 НомерДокумента} и пр. заработала нормально. Даже с заголовками, даже с фигурами и текстом в фигурах.

Но, при выводе многострочного блока - например табличной части - подглючивает, выдает сообщение типа "Документ неожиданно поврежден. Восстановить его средствами Microsoft Word?" при выборе "Да", вроде все открывается нормально. Причем в БСП 3.1 эта ошибка происходит прямо на демо-базе БСП. Но тем не менее, документ, в конечном счете, формируется без видимых повреждений.
31. archt 9 12.05.20 13:30 Сейчас в теме
Я правильно понимаю: установленный Microsoft Word не нужен?
Код открыт?
32. artms 210 15.05.20 17:12 Сейчас в теме
(31) Да все верно. "Модуль можете использовать для коммерческого использования, однако прошу не удалять ссылку на мои реквизиты."
33. archt 9 15.05.20 21:28 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Разработчик 1С
Санкт-Петербург
зарплата от 140 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
зарплата от 90 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день