|
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 9
|
|
Word - отчёт с заблокированными абзацами02.11.2015, 19:51. Показов 807. Ответов 10
Метки нет (Все метки)
Добрый день! Помогите, пожалуйста.
Возник вопрос, можно ли в C# организовать word-отчёт, чтобы определённые абзацы были недоступны для редактирования?
0
|
|
| 02.11.2015, 19:51 | |
|
Ответы с готовыми решениями:
10
Word-отчёт с заблокированными абзацами
Как извлекать из Word-таблицы не просто линейные строки а вместе с абзацами? |
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
|
| 03.11.2015, 17:23 | |
|
Формат docx - это набор xml-файлов, сжатые zip-ом. Готовите шаблон, в котором задаёте нужные стили. Сохраняете. Раскрываете как архив. Смотрите, как ложатся нужные данные в xml-файлы. В своём приложении даёте возможность пользователям одни данные редактировать в соответствии со своими ролями, другие данные подставляете из базы, например, или просто вычисляете. Всё вместе вставляете в структуру документа в виде xml. Архивируете. Получаете вполне презентабельный отчёт, при этом сам Word может на машине не стоять
0
|
|
|
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 9
|
|
| 04.11.2015, 19:14 [ТС] | |
|
Спасибо за ответ. Но дело в том, что word документ формируется путём взятия значений из полей карточки в системе DocsVision.
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
|
| 06.11.2015, 12:31 | |
|
System.Windows.Media.TextEffect.Freeze ()
"Делает текущий объект нередактируемым и определяет для его свойства IsFrozen значение true. (Унаследовано от Freezable.)"
0
|
|
|
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 9
|
|
| 09.11.2015, 18:30 [ТС] | |
|
Спасибо за ответ)
Я вот пробовала реализовать через параграфы, ниже вставила код, в данном случае можно этот метод применить? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Word = Microsoft.Office.Interop.Word; namespace MSWord { public partial class Form1 : Form { private Word.Application wordapp; private Word.Documents worddocuments; private Word.Document worddocument; private Word.Paragraphs wordparagraphs; private Word.Paragraph wordparagraph; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int i = Convert.ToInt32(((Button)(sender)).Tag); switch (i) { case 1: //Создаёт объект Word - равносильно запуску Word wordapp = new Word.Application(); //Делаем его видимым wordapp.Visible = true; //Создаём документ 1 Object filename = @"C:\Проба\tut1.docx"; Object confirmConversions = true; Object readOnly = false; Object addToRecentFiles = true; Object passwordDocument = Type.Missing; Object passwordTemplate = Type.Missing; Object revert = false; Object writePasswordDocument = Type.Missing; Object writePasswordTemplate = Type.Missing; Object format = Type.Missing; Object encoding = Type.Missing; Object oVisible = Type.Missing; Object openConflictDocument = Type.Missing; Object openAndRepair = Type.Missing; Object documentDirection = Type.Missing; Object noEncodingDialog = false; Object xmlTransform = Type.Missing; worddocument = wordapp.Documents.Open(ref filename, ref confirmConversions, ref readOnly, ref addToRecentFiles, ref passwordTemplate, ref passwordDocument, ref revert, ref writePasswordDocument, ref writePasswordTemplate, ref format, ref encoding, ref oVisible, ref openAndRepair, ref documentDirection, ref noEncodingDialog, ref xmlTransform); //Получаем ссылки на параграфы документа wordparagraphs = worddocument.Paragraphs; worddocument.Sections[1].ProtectedForForms = false; //Будем работать с первым параграфом wordparagraph = (Word.Paragraph)wordparagraphs[1]; //Выводим текст в первый параграф wordparagraph.Range.Text = "Текст выводим в 1 абзац"; //Получаем ссылки на параграфы документа wordparagraphs = worddocument.Paragraphs; //Будем работать с первым параграфом wordparagraph = (Word.Paragraph)wordparagraphs[2]; //Выводим текст в первый параграф wordparagraph.Range.Text = "Текст выводим в 2 абзац"; Object missing = Type.Missing; Object NoReset = true; worddocument.Protect(Word.WdProtectionTy pe.wdAllowOnlyFormFields, ref NoReset, ref missing, ref missing); break; case 2: Object saveChanges = Word.WdSaveOptions.wdPromptToSaveChanges ; Object originalFormat = Word.WdOriginalFormat.wdWordDocument; Object routeDocument = Type.Missing; ((Word._Application)wordapp).Quit(ref saveChanges, ref originalFormat, ref routeDocument); wordapp = null; break; default: Close(); break; } } } }
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||
| 10.11.2015, 07:52 | ||
|
Если word-отчёт создактся средствами обьектной модели Word, сомневаюсь.
0
|
||
|
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 9
|
|
| 10.11.2015, 19:08 [ТС] | |
|
Дело в том, что word должен генерироваться и выводиться при нажатии на кнопку
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
|
| 11.11.2015, 14:27 | |
|
Попробуйте сделать отчет на основе класс а System.Windows.Documents. FlowDocument. Из него можно сохраниться в формате RTF
0
|
|
|
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 9
|
|
| 11.11.2015, 18:41 [ТС] | |
|
Спасибо за ответ, получается разработка ведётся на основе шаблона word?
И ещё, вы не знаете может это можно реализовать на языке VBScript?
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
|
| 12.11.2015, 09:40 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 9
|
|
| 14.11.2015, 13:16 [ТС] | |
|
Сроочно нужно, пожалуйста! Нужна помощь!
0
|
|
| 14.11.2015, 13:16 | |
|
Помогаю со студенческими работами здесь
11
Отчет в Word
Отчёт в Word отчет в Word Отчёт в word Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|