Создание DOCX / WORD XML в C#

Привет Программисты!

Подскажите, пожалуйста, как можно создать вордовский документ при помощи C#.

Должен выводиться отформатированый текст и на определённые позиции переменные данные.

Какие есть варианты?

Спасибо!

Лига программистов

2.3K постов12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий

Самый простой вариант без потусторонних библиотек.

Делаете красивый шаблон, с нужными отступами и рюшечками. Там, где потом программно нужно будет поменять текст, вставляете что-то вроде {{My_string_1}}

Сохраняете  как файл rtf.

Потом в C# (или ещё где), отрываете шаблон, и поиском заменяете строку {{My_string_1}} на нужный текст.

раскрыть ветку (24)
1
Автор поста оценил этот комментарий

Большое спасибо! Это кажется то, что нужно!

0
Автор поста оценил этот комментарий

а если учесть что docx это по сути архив, в котором автору нужно только отредактировать document.xml заменив ключи на значения, то можно и без rtf обойтись

Автор поста оценил этот комментарий

такой говнокод не 1 пул реквест не пройдет.

раскрыть ветку (21)
Автор поста оценил этот комментарий

Юноша, не торопитесь с выводами и резкими высказываниями.

Данный универсальный подход был реализован для Web-приложения в далёком 2004 году, Java 1.4, Struts, Tomcat.

Ограничение заказчика - не использовать сторонние библиотеки.

Приложение используется до сих пор, порядка 500 пользователей.

Ни одного сбоя не зафиксировано.

раскрыть ветку (20)
2
Автор поста оценил этот комментарий

При определённых условиях оно тоже поедет

Иллюстрация к комментарию
раскрыть ветку (18)
Автор поста оценил этот комментарий

Идеален только сферический конь в вакууме.

раскрыть ветку (17)
1
Автор поста оценил этот комментарий

Есть штатный механизм - COM. С которым шарп прекрасно работает. С ним вообще всё прекрасно работает, включая PowerShell и VBSript. Нахуй тут советовать костыли из rtf, которые будут работать строго по чётным дням апреля високосного года - это вне всяческого понимания.

раскрыть ветку (16)
0
Автор поста оценил этот комментарий

Хм, а для использования их апи не нужна лицензия?

раскрыть ветку (7)
0
Автор поста оценил этот комментарий
Нет.
раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Мне стало интересно и я попробовал сделать сэмпл создания вордовского документа с мсдн (https://www.c-sharpcorner.com/UploadFile/muralidharan.d/how-...).
Судя по всему, этот код запускает настоящий инстанс ворда и его средствами создает документ. Все бы хорошо, но этот не запускается так как ком класс не зарегистрирован, что бывает когда ворда у тебя нет. Т.е. просто interop либы не достаточно. Нужен реально установленный ворд. А где установленный ворд там и лицензия.

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

раскрыть ветку (5)
1
Автор поста оценил этот комментарий
но и тем, что на машине, обрабатывающей этот шаблон, не нужен купленный ворд.

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

И гораздо проще тупо купить лицуху на машину, где вот это вот всё будет происходить, чем платить 50 раз за поддержку велосипеда с костылями. А ты платить будешь, хотя бы в виде зряплаты горе-разработчика.

Сколько времени ты проебёшься с этой задачей? Сколько времени у тебя уйдёт на переделку, когда MS в очередной раз формат хранения сменит, или перестанет условный rtf поддерживать? Я сильно сомневаюсь что цена этих человеко-часов будет меньше, чем купить ещё одну лицензию.

Такие вот дела.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

"Если ты собрался пользоваться вордовыми документами, то тебе один хуй нужна лицензия."
Та не. Когда мне приходится иметь дело с docx я просто шлю его на гугл диск и там открываю.
"И гораздо проще тупо купить лицуху на машину, где вот это вот всё будет происходить"
Это уже условия заказчикаю Вполне может так случиться что это дело может понадобиться для некого онлайн сервиса (подготовка документов по шаблону), а установка лицензионного софта на облачных девайсах может нести быть проблематичным (хотя и выбор ворда для этого дела был бы довольно старнным).

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

Но это уже тема для разговора не здесь. Это как раз в теме проблемы "XY" - вы же всей моей ситуации не знаете, но не на Пикабу же весь мой проект расписывать =)

раскрыть ветку (1)
Автор поста оценил этот комментарий
Самое смешное, что с ртф такой говнокодер будет работать через компонент винформ в веб бекенде. К гадалке не ходи
Автор поста оценил этот комментарий
"Хуяк, хуяк, в продакшн. работает же".
раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Это ещё не самый пиздец.

пиздец - вот это:

Большое спасибо! Это кажется то, что нужно!
раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Не, показалось мне. Такой алгоритм можно было бы и без вопросов к сообществу "придумать" и реализовать, причём реально на любом языке. А мне нужен вариант, когда при смене форматирования не нужно было бы переписывать всю функцию заново.

А что скажете про TemplateEngine.Docx ?

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

На условном sql.ru я бы тебе ответил.

А тут могу мемасиков, котегов и сисег накидать, надо?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Давай, но только по теме сообщества.

раскрыть ветку (2)
Автор поста оценил этот комментарий
Только вот я не юноша и такого говнокода повидал не мало, такие изменения в моих проектах будут сразу отклонены
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества