Заполнение шаблона word qt
Обновлено: 21.11.2024
Это продолжение работы, которую мы проделали в моей предыдущей статье — Заполнение документов Word данными из внешних источников. Разница в том, что мы будем использовать готовый шаблон для вставки данных. Вместо того, чтобы вставлять данные «волей-неволей», нам нужно найти, где их вставить в предопределенной структуре документа.
Создание шаблона Word
Прежде чем писать код, нам нужен шаблон документа. После создания шаблона мы можем написать вокруг него код, потому что знаем его структуру. Мы можем, если будем вести себя правильно, иметь представление о том, как документ будет использоваться пользователями.
Для этого примера вам необходимо сделать следующее:
- Откройте Microsoft Word.
- Создайте пустой документ.
- Выполните команду «Сохранить как» и сохраните файл как файл .dotx. Вы можете сохранить в место по вашему выбору. Запишите его расположение, потому что оно понадобится вам при тестировании кода. Назовите файл DataTemplate.dotx, потому что я так назвал свой.
- Оформите первую страницу в соответствии с изображением ниже:
- Вставьте разрыв страницы, чтобы добавить еще одну страницу в документ Word.
- Оформите страницу в соответствии с изображением ниже:
- Не забудьте вставить закладки, как указано. Вы можете найти команду закладки на вкладке «Вставка» Word. После добавления обеих закладок диалоговое окно закладок будет выглядеть следующим образом:
- Сохраните документ. ол>р>
- Нажмите "Настроить ленту" на левой боковой панели.
- В области "Вкладки" справа установите флажок "Разработчик".
- Нажмите "ОК".
- Добавление имени в поле "Название" будет отображать это имя при выборе элемента управления.
- Раскрывающийся список "Показать как" позволяет изменить основной внешний вид ограничивающей рамки или тегов элемента управления.
- Включите "Режим конструктора".
- Выделите текст-заполнитель и внесите необходимые изменения в форматирование.
- Отключите "Режим дизайна".
- Перейдите на вкладку "Разработчик".
- Нажмите "Ограничить редактирование".
- На боковой панели «Ограничить редактирование» справа установите флажок под пунктом «2. Ограничения редактирования» и измените раскрывающийся список на «Заполнение форм».
- Нажмите «Да, начать принудительное применение защиты» на шаге «3. Начать принудительное применение».
- Как вставить формулу с другого листа в Excel
- Как найти первое ненулевое значение в строке Excel
- Как взломать лицензионную программу movavi 2021
- Как преобразовать текст в формат fb2 для электронной книги
- Как вернуть бегунок в слово справа
Теперь у нас есть шаблон документа с двумя страницами. Оба имеют две таблицы, но таблицы второй страницы находятся в закладках Word. Мы готовы написать код.
Напишите код
Сегодняшний код сосредоточен на том, как найти таблицы в документе. Таблицы действуют как заполнители для данных, которые мы хотим вставить.
Функция findTable
Во-первых, нам нужна функция, которая находит нужную таблицу. Word не позволяет пользователям давать имена таблицам. Мы можем сделать это в коде с помощью свойства ID, но это бесполезно для создания пользователем шаблонов.
Поэтому конструктор шаблонов создает таблицы и вставляет для них имя в первую ячейку. Затем мы можем перебрать все таблицы в документе и найти нашу таблицу. Это то, что делает функция findTable.
Функция принимает документ Word и строку в качестве параметров. Затем он просматривает таблицы документа и находит таблицу, содержащую строку поиска. Я решил использовать contains вместо ==, так как это более снисходительно.
Функция getTableByBookmarkName
Использование закладок упрощает код. Все, что нам нужно сделать, это вызвать закладку по имени и получить первую таблицу в диапазоне закладки. getTableByBookmarkName прекрасно справляется с этой задачей.
Для наших целей я предполагаю, что закладка содержит только таблицу или, если существует несколько таблиц, что нам нужна первая таблица. Эту логику достаточно легко изменить, если бизнес-требования диктуют иное.
Необходимые изменения кода в предыдущей статье
Чтобы включить указанные выше функции в наши методы вставки данных, нам нужно внести пару изменений. Для целей этой статьи я сосредоточусь на импорте из Access и Outlook. Да, предыдущая статья также импортирована из SharePoint, но я думаю, что нам нужны только образцы, чтобы донести суть.
Импорт данных из Access
Метод ImportFromAccess теперь имеет параметр demoType. Это строка, которая позволяет нам указать, какой метод мы хотим использовать для поиска таблицы. Мы хотим использовать стратегию закладок или стратегию зацикливания таблицы? Вот почему существует demoType.
Мы проверяем значение demoType и разделяем его соответствующим образом. Если значение равно «table», мы вызываем findTable и просматриваем таблицы документа. В противном случае мы используем метод закладки, вызывая getTableByBookmarkName.
С таблицей мы запрашиваем доступ и вставляем результаты запроса в таблицу.
Импорт из Outlook
InsertFromOutlook работает так же, как InserFromAccess. Мы используем параметр demoType, чтобы указать, как получить таблицу. После получения таблицы мы открываем Outlook и вставляем контактные данные в таблицу.
Ключевое отличие этого метода заключается в том, что мы добавляем в таблицу два столбца и устанавливаем значения для строки заголовка.
Для производственного кода параметр demoType не имеет смысла. Однако выделение этих двух стратегий, безусловно, работает.
Когда дело доходит до вставки данных с использованием шаблона документа Word, первым шагом является создание структуры шаблона. Следующим шагом будет творческий подход к коду и построение решения на основе структуры шаблона.
Доступные загрузки:
В этой статье предлагаются расширенные методы Microsoft Word (2010–2013) для создания защищенного шаблона с заполняемыми полями (или «элементами управления содержимым» в терминологии Microsoft) для данных, которые не могут быть дополнены тегами полей слияния Clio.Эти методы могут быть полезны для создания защищенных трастовых квитанций с помощью Document Automation.
Если вы не знакомы с Document Automation, см. следующие статьи поддержки:
Содержание
Отображение вкладки "Разработчик"
Инструменты, необходимые для добавления элементов управления формой в шаблон, можно найти на вкладке "Разработчик", которая по умолчанию скрыта.
Чтобы отобразить вкладку "Разработчик", нажмите "Файл".
Затем нажмите "Параметры".
В окне параметров Word
Добавление элементов управления формы
На вкладке "Разработчик" 1 в группе "Элементы управления" 2 находится ряд доступных полей управления формой.
Управление форматированным текстовым содержимым — конечный пользователь сможет форматировать текст, введенный в эту текстовую область. |
Элемент управления содержимым простого текста — конечный пользователь НЕ сможет форматировать текст, введенный в эту текстовую область. |
Комбо/выпадающий элемент управления выбором — параметры можно добавить к этому элементу управления, чтобы пользователи могли выбирать из него. |
Выбор даты — вызывает мини-календарь для выбора даты. |
Элемент управления формой с текстом-заполнителем по умолчанию и без форматирования — режим конструктора включен |
При форматировании текста заполнителя элемента управления имейте в виду, что стиль этого заполнителя по умолчанию может не сразу идентифицировать его как элемент управления формы. Добавление выделения или особого стиля к заполнителю сделает его более заметным в документе. Когда конечный пользователь вводит или выбирает содержимое в элементе управления, форматирование заполнителя исчезает, а содержимое принимает стиль этой строки в документе. Добавление ограничений на редактирование/защиты к вашему шаблону Защита вашего шаблона может гарантировать, что любой пользователь или контакт, который может заполнять ваши объединенные документы, сможет изменять только информацию, которая находится в элементах управления формы, которые вы добавляете в свой шаблон. Чтобы ограничить редактирование вашего шаблона:
После загрузки в Clio защищенный шаблон будет создавать новые защищенные документы Word, в то же время извлекая информацию из Clio. Меньше чем за час мы продемонстрируем передовые методы MS Word для добавления условных полей и элементов управления формы в ваш шаблон Word. Мы также покажем, как добавить ограничения на редактирование вашего шаблона. Этот расширенный веб-семинар предназначен для пользователей, которые уже умеют создавать шаблоны Word для использования в автоматизации документов. Нажмите ЗДЕСЬ, чтобы просмотреть запись. Спасибо за отзыв.Мы будем использовать эту информацию для постоянного улучшения наших ресурсов самопомощи. Я действительно новичок в QT, и мне было поручено программно обновить некоторые значения полей в документе Word, в настоящее время я могу нормально заменить текст из документа Word, но когда это значение поля находится внутри объекта (таблицы или чего-либо еще), это не так. работает, мой код: Если вы можете помочь, было бы здорово :)
Я бы предложил убрать слово "поля" из вашего заголовка, потому что вы заменяете конкретный текст, а не поле Word. Так вы привлечете больше внимания. Если вы можете изменить характер целевых файлов, вам следует заменить свои цели реальными полями Word DocVariable или DocProperty. Затем используйте свой код, чтобы изменить переменную или свойства и обновить соответствующие поля в документах. Некоторые свойства документа (в меню «Экспресс-блоки» > «Свойства документа») сопоставляются с точками данных XML и не требуют обновления полей, если они используются. на самом деле мы создаем поля: Вставка -> Быстрые части -> Поле, затем выбираем тип поля, может быть, это неправильно, но я не знаю, как сделать другие шаблоны, потому что документ Word должен содержать какой-то заполнитель, где Я могу программно добавить некоторые значения 1 Ответ 1Если вы можете изменить характер целевых файлов, вам следует заменить их реальными полями Word DocVariable или DocProperty. Затем используйте свой код, чтобы изменить переменную или свойства и обновить соответствующие поля в документах. Некоторые свойства документа (в меню «Экспресс-блоки» > «Свойства документа») сопоставляются с точками данных XML и не требуют обновления полей, если они используются. Заполнитель может быть (1) полем DocVariable или (2) полем DocProperty. Вы можете изменить переменные или свойства с помощью кода, а затем обновить поле. Вы также можете использовать один из встроенных сопоставленных элементов управления содержимым свойства документа, и в этом случае нет необходимости обновлять поле при изменении свойства. Это автоматически. Подробнее об этом читайте на моей связанной странице: Повторяющиеся элементы управления содержимым документа с сопоставленными данными или другие элементы управления сопоставляемым содержимым. Вот ссылки на две страницы Word MVP по доступу к свойствам документа с помощью vba. Приходилось ли вам использовать такой шаблон?
Если вы имеете в виду просто использование таблиц, да, я сделал шаблоны с закладками в таблице. Метод поиска работает так же. На самом деле, хотя я и не пробовал делать закладки в заголовке, он также может найти элементы в заголовке — например, при поиске по ключевому слову.
На самом деле таблицу в Word можно заполнить с помощью закладок. На практике: Для выполнения теста создайте шаблон Word, как описано в сводке. В методе InsertIntoTable вы увидите использование логического свойства "Столбец" из Полный путь к входному документу Полный путь к выходному документу попробуйте doc.SaveAs(newfname); // Сохраняем полученный документ Word doc.Close(WdSaveOptions.wdDoNotSaveChanges); Двумерные данные для вставки в таблицу Word OrigReplaceSelection = doc.Application.Options.ReplaceSelection; for (int col = 0; col bookMark.Range.Rows.Count) // Выбираем конкретную ячейку Общие Новости Предложение Вопрос Ошибка Ответ Шутка Похвала Rant Admin Используйте Ctrl+Влево/Вправо для переключения сообщений, Ctrl+Вверх/Вниз для переключения тем, Ctrl+Shift+Влево/Вправо для переключения страниц. Читайте также: |