Создайте карту для проверки функциональности сохранения файла MS Word
Обновлено: 21.11.2024
В своем первом блоге я написал краткое введение об OpenXML в обработке текстов и о том, как мы можем работать с текстовыми документами в ABAP. В этом блоге я опишу пользовательскую xml-часть документа Word и приведу несколько примеров того, как мы можем использовать ее в ABAP. Например, как можно использовать пользовательские данные в запросах на печать по запросу для предоставления данных о клиентах в документе с контролем содержимого.
Пользовательские части XML были представлены в Microsoft Word 2007 вместе с форматами Open XML. Пользовательская часть документа Microsoft Word используется для хранения пользовательских данных, и неудивительно, что формат данных — XML. В связи с пользовательским XML мы также будем использовать функциональность управления контентом Microsoft Word. Пользовательский элемент управления — это набор отдельных объектов для управления и настройки содержимого документа. Одной из его целей является сопоставление данных из разных источников (в нашем примере из пользовательского XML) в точное место в документе Word. Итак, давайте рассмотрим пример.
В первой части я покажу вам, как вручную создавать и изменять пользовательскую часть XML. Во второй части я приведу простой код ABAP, который делает то же самое.
Целью этого шага является понимание пользовательского XML и управления контентом в Word. Итак, откройте наш документ Test.docx (или создайте новый) в Microsoft Word 2007 или выше. В качестве предварительного условия необходимо установить надстройку под названием «Редактор пользовательских XML-частей». Перейдите на вкладку «Разработчик» -> «Надстройка», найдите ее и добавьте. После успешной установки вы должны увидеть новую кнопку XML Mapping Pane.
В качестве второго шага подготовьте простой пользовательский XML-файл с некоторыми фиктивными данными в формате XML. Я использую следующий пример.
Нажмите кнопку Область сопоставления XML, чтобы добавить новую пользовательскую часть. С правой стороны выберите Добавить новую часть… и перейдите к нашему файлу custom.xml. После добавления выберите «пользовательскую» часть, и вы должны увидеть что-то вроде этого.
Теперь поместите курсор в точное место в документе, где вы хотите сопоставить данные, и, щелкнув правой кнопкой мыши атрибуты (имя, фамилию, дату), выберите «Вставить элемент управления содержимым» -> «Обычный текст». Перепишите значения атрибутов элементов управления содержимым и сохраните документ. Я добавил имя и фамилию в наш документ Test.docx.
Теперь давайте проверим xml-часть основного документа и пользовательскую xml-часть, которые были добавлены в документ и теперь будут видны в структуре документа. Для этого я использую инструмент OOXML в Chrome.
Наша пользовательская XML-часть имеет путь customXml–>item1.xml и выглядит так.
Основная часть имеет путь->document.xml. Поскольку он быстро стал большим, я предоставлю только краткий образец этого xml. обратите внимание на тег, который связывает данные из пользовательского XML с документом.
2. Поддержка пользовательского XML в ABAP
Во второй части я предоставлю код ABAP, чтобы сделать то же самое, что и в первом шаге. После первого запуска программы мы читаем текстовый документ, создаем новую пользовательскую часть xml, прикрепляем эту часть к документу и сохраняем ее в тот же файл. Теперь пришло время вручную сопоставить данные с местами, где мы хотим, чтобы они появлялись — так же, как я показывал в 1-й части. Теперь при втором запуске отчета мы заменяем пользовательский XML данными, которые нам нужны.
В своем следующем блоге я опишу способ использования пользовательского XML для динамического заполнения таблиц в документе Word собственными данными.
Есть ли способ сопоставить свойства документа MS Word в онлайн-библиотеке документов SharePoint
Внутри документа MS Word у нас есть следующие свойства:-
и мой вопрос: можем ли мы сопоставить эти свойства в библиотеке документов SharePoint? так, например, я могу заполнить вышеуказанные свойства внутри документа Word >> загрузить документ в онлайн-библиотеку документов SharePoint >> тогда свойства будут автоматически заполнены внутри SharePoint?
Не могли бы вы сообщить мне, была ли решена ваша проблема или есть какие-либо обновления?
Я с нетерпением жду вашего ответа.
Удачи в работе!
Я обновил свой ответ под вашим ответом.
Не могли бы вы сообщить мне, решена ли ваша проблема или есть какие-либо обновления?
Удачного дня!
5 ответов
Когда вы загружаете файлы в библиотеку документов SharePoint Online, библиотека SharePoint автоматически заполняет свойства файлов.
Пожалуйста, выполните следующие действия:
Перейдите в Библиотеку документов >> Настройки библиотеки >> Дополнительные настройки >> включите функцию «Разрешить управление типом контента» >> OK
Вернитесь на страницу настроек библиотеки, перейдите в раздел Колонки, нажмите ссылку Добавить из существующих колонок сайта.
На странице "Добавить столбцы из столбцов сайта" эти столбцы можно выбрать в списке "Доступные столбцы сайта" >> "Добавить" >> "ОК"
Когда вы загружаете файл в библиотеку документов, вы обнаружите, что некоторые свойства документа автоматически заносятся в библиотеку. Это связано с тем, что некоторые свойства в файле в качестве метаданных автоматически сопоставляются с SharePoint Online.
Спасибо,
Echo Du
=====================
Если ответ полезен, нажмите «Принять ответ». " и проголосуйте за него.
Примечание: следуйте инструкциям в нашей документации, чтобы включить уведомления по электронной почте, если вы хотите получать соответствующее уведомление по электронной почте для этой темы.
хорошо, спасибо за ваш полезный ответ. Я выполнил ваши шаги и могу сопоставить статус, комментарии, заголовок ... но я не уверен, что мы можем создавать настраиваемые свойства внутри MS Word и сопоставлять их с SharePoint +, если мы можем сопоставить другие свойства, такие как менеджер, компания и т. д. Я спрашиваю, есть ли встроенный подход или подход разработки, такой как создание удаленного приемника событий, который может считывать свойства MS и заполнять список SharePoint. р>
Основные свойства документа — это свойства, общие для всех приложений Office. SharePoint включает следующие столбцы, которые сопоставлены с этими основными свойствами документа:
Автор (сопоставляется со свойством основного документа Creator)
Комментарии (сопоставляется с основным свойством документа Description)
Однако некоторые свойства имеют столбцы с одинаковыми или похожими именами в SharePoint, но они не распознаются: Компания, Менеджер.
В настоящее время нет способа вручную сопоставить свойства с SharePoint. Поэтому, если вы хотите управлять свойствами в документе Word, вместо этого лучше использовать свойства SharePoint, так как их легче добавить или удалить со стороны SharePoint.
Спасибо за ответ, но на основании моего теста свойство Word "Автор" будет сопоставлено со столбцом "Автор" SharePoint, а не с "Создателем". также комментарии будут сопоставлены со столбцом комментариев SharePoint, а не с описанием. Я что-то пропустил?
Да, вы правы. Это может быть связано с моим неправильным описанием, которое вызвало у вас неправильное понимание.
Таблица сопоставления
Эффект изображения
Во-первых, обратите внимание на сопоставленные свойства, включенные в Word, в разделе «Вставка» > «Быстрые элементы» > «Свойства документа».
У меня нет Share Point. У меня сложилось впечатление, что сопоставление происходит из SharePoint в Word, а не наоборот, но я говорю по незнанию.
Я знаю, что SharePoint может добавить в этот список QuickParts.
Вы определенно можете это сделать. Это функция появилась в SharePoint 2007. В список документов добавьте нужные столбцы и поместите в них данные. Вы можете поставить даже целые абзацы, если хотите. Есть несколько способов сделать это, и некоторые из них лучше других.
Это быстрый, но не лучший способ. Вам нужно будет открыть вкладку разработчика в word. Затем щелкните панель сопоставления XML. здесь вы можете выбрать тот, в названии которого есть Sharepoint или XML. и вы увидите список ваших пользовательских столбцов. Теперь в документе Word с открытой справа панелью сопоставления XML щелкните правой кнопкой мыши нужное значение и вставьте элемент управления.
Теперь вы можете изменить значение в элементе управления в Word или открыть библиотеку документов и изменить значение в столбце, и оно будет синхронизировано в обоих направлениях. Если вы отправите этот документ другому пользователю, у которого нет библиотеки SharePoint, он увидит только введенные вами значения. Что-то вроде слияния.
Затем вы можете настроить XML по умолчанию для этого документа или библиотеки документов, чтобы всегда отображались значения SharePoint.
Поскольку около миллиарда человек используют Microsoft Office, формат DOCX является де-факто самым популярным стандартом для обмена файлами документов между офисами.Хотя DOCX является сложным форматом, вы можете проанализировать его вручную для более простых задач, таких как индексация, преобразование в TXT и внесение других небольших изменений. Я хотел бы предоставить вам достаточно информации о внутреннем устройстве DOCX, чтобы вам не пришлось обращаться к спецификациям ECMA — объемному руководству на 5000 страниц.
Поскольку около миллиарда человек используют Microsoft Office, формат DOCX является де-факто самым популярным стандартом для обмена файлами документов между офисами. Его ближайший конкурент — формат ODT — поддерживается только Open/LibreOffice и некоторыми продуктами с открытым исходным кодом, что делает его далеким от стандарта. Формат PDF не является конкурентом, потому что PDF-файлы нельзя редактировать и они не содержат полной структуры документа, поэтому они могут вносить только ограниченные локальные изменения, такие как водяные знаки, подписи и т.п. Вот почему большинство деловых документов создаются в формате DOCX; нет хорошей альтернативы для его замены.
Несмотря на то, что DOCX – сложный формат, вам может потребоваться проанализировать его вручную для более простых задач, таких как индексирование, преобразование в TXT и внесение других небольших изменений. Я хотел бы предоставить вам достаточно информации о внутреннем устройстве DOCX, чтобы вам не пришлось обращаться к спецификациям ECMA — объемному руководству на 5000 страниц.
Лучший способ понять формат — создать простой документ из одного слова в MSWord и посмотреть, как редактирование документа меняет лежащий в его основе XML. Вы столкнетесь с некоторыми случаями, когда DOCX не форматируется должным образом в MS Word, и вы не знаете, почему, или столкнетесь со случаями, когда не очевидно, как создать желаемое форматирование. В этом поможет видение и понимание того, что происходит в XML.
Около года я работал над редактором DOCX для совместной работы CollabOffice и хочу поделиться своими знаниями с сообществом разработчиков. В этой статье я объясню файловую структуру DOCX, обобщив информацию, разбросанную по Интернету. Эта статья является промежуточным звеном между огромной и сложной спецификацией ECMA и простыми онлайн-руководствами, доступными в настоящее время. Вы можете найти файлы, сопровождающие эту статью, в проекте toptal-docx в моей учетной записи github.
Простой файл DOCX
Несмотря на то, что мы создали простой документ, в процессе сохранения в Microsoft Word были созданы темы по умолчанию, свойства документа, таблицы шрифтов и т. д. в формате XML.
Для начала давайте удалим неиспользуемые элементы и сосредоточимся на document.xml, который содержит основные текстовые элементы. Когда вы удаляете файл, убедитесь, что вы удалили все ссылки на него из других файлов xml. Вот пример сравнения кода, показывающий, как я удалил зависимости от app.xml и core.xml. Если у вас есть какие-либо неразрешенные/отсутствующие ссылки, MSWord будет считать файл поврежденным.
Вот структура нашего упрощенного минимального документа DOCX (а вот и проект на github):
Давайте разберем по файлам отсюда, сверху:
_rels/.rels
Определяет ссылку, которая сообщает MS Word, где искать содержимое документа. В данном случае это ссылка на word/document.xml :
_rels/document.xml.rels
Этот файл определяет ссылки на ресурсы, такие как изображения, встроенные в содержимое документа. В нашем простом документе нет встроенных ресурсов, поэтому тег отношения пуст:
[Content_Types].xml
[Content_Types].xml содержит информацию о типах мультимедиа внутри документа. Поскольку у нас есть только текстовый контент, это довольно просто:
документ.xml
Наконец, вот основной XML с текстовым содержимым документа. Я удалил некоторые объявления пространств имен для ясности, но вы можете найти полную версию файла в проекте github. В этом файле вы обнаружите, что некоторые ссылки на пространство имен в документе не используются, но вам не следует их удалять, поскольку они нужны MS Word.
Вот наш упрощенный пример:
Основной узел представляет собой сам документ, содержит абзацы и вложенные в него размеры страницы, определенные с помощью .
это атрибут, который можно игнорировать; он используется внутренними компонентами MS Word.
Давайте рассмотрим более сложный документ с тремя абзацами. Я выделил XML теми же цветами на снимке экрана из Microsoft Word, чтобы вы могли видеть взаимосвязь:
Структура абзаца
Простой документ состоит из абзацев, абзац состоит из строк (серии текста с одинаковым шрифтом, цветом и т. д.), а строки состоят из символов (например, ). внутри тегов может быть несколько символов, и их может быть несколько в одном прогоне.
Опять же, мы можем игнорировать .
Свойства текста
Основные свойства текста — это шрифт, размер, цвет, стиль и т. д. Существует около 40 тегов, определяющих внешний вид текста. Как вы можете видеть в нашем примере с тремя абзацами, у каждого прогона есть свои собственные свойства внутри , спецификация и жирность .
Важно отметить, что свойства делают различие между двумя группами символов, обычным и сложным письмом (например, арабским), и что свойства имеют разные теги в зависимости от того, на какой тип символов они воздействуют.< /p>
Большинство тегов свойств обычных скриптов имеют соответствующий тег сложного скрипта с добавленной буквой «C», указывающей, что свойство предназначено для сложных скриптов. Например: (курсив) становится , а полужирный тег для обычного письма становится для сложного письма.
Стили
В Microsoft Word есть целая панель инструментов, посвященная стилям: обычный, без интервала, заголовок 1, заголовок 2, заголовок и т. д. Эти стили хранятся в /word/styles.xml (примечание: на первом этапе нашего простого примера мы удалили этот XML из DOCX. Чтобы увидеть это, создайте новый DOCX).
После того как вы определили текст как стиль, вы найдете ссылку на этот стиль внутри тега свойств абзаца, . Вот пример, где я определил свой текст со стилем Заголовок 1:
а вот и сам стиль из styles.xml:
Xpath указывает, что шрифт выделен полужирным, и указывает цвет шрифта. указывает MSWord использовать стиль «Обычный» для любых отсутствующих свойств.
Наследование собственности
Свойства текста наследуются. Прогон имеет свои собственные свойства ( w:p/w:r/w:rPr/* ), но он также наследует свойства абзаца ( w:r/w:pPr/* ), и оба могут ссылаться на свойства стиля из / слово/стили.xml .
Абзацы и прогоны начинаются со свойствами по умолчанию: w:styles/w:docDefaults/w:rPrDefault/* и w:styles/w:docDefaults/w:pPrDefault/* . Чтобы получить конечный результат свойств персонажа, вы должны:
- Использовать свойства запуска/абзаца по умолчанию
- Добавить свойства стиля прогона/абзаца
- Добавить локальные свойства запуска/абзаца
- Добавить свойства прогона результатов к свойствам абзаца.
Когда я говорю "присоединить" B к A, я имею в виду повторение всех свойств B и переопределение всех свойств A, оставляя все непересекающиеся свойства как есть.
Еще одно место, где могут быть расположены свойства по умолчанию, — это тег с w:type="paragraph" и w:default="1" . Обратите внимание, что сами символы внутри прогона никогда не имеют стиля по умолчанию, поэтому фактически не влияют на текст.
Переключить свойства
Некоторые свойства являются переключаемыми, например (жирный шрифт) или (курсив); эти атрибуты ведут себя как оператор XOR.
Это означает, что если родительский стиль выделен полужирным шрифтом, а дочерний шрифт выделен жирным шрифтом, результатом будет обычный нежирный текст.
Чтобы правильно обрабатывать атрибуты-переключатели, необходимо провести много тестов и перепроектировать. Взгляните на параграф 17.7.3 спецификации Open XML ECMA-376, чтобы получить формальные подробные правила для свойств переключения/
Шрифты
Шрифты подчиняются тем же общим правилам, что и другие текстовые атрибуты, но значения свойств шрифта по умолчанию указываются в отдельном файле темы, на который ссылаются в word/_rels/document.xml.rels следующим образом:
Исходя из приведенной выше ссылки, имя шрифта по умолчанию будет найдено в word/theme/themes1.xml внутри тега a:themeElements/a:fontScheme/a:majorFont или a:minorFont.
Размер шрифта по умолчанию — 10, если тег w:docDefaults/w:rPrDefault отсутствует, тогда размер шрифта — 11.
Выравнивание текста
Выравнивание текста задается тегом с четырьмя доступными режимами w:val: "слева", "по центру", "справа" и "оба".
«левый» — режим по умолчанию; текст начинается слева от прямоугольника абзаца (обычно на ширину страницы). (Этот абзац выровнен по левому краю, что является стандартным.)
Режим "center", как и ожидалось, центрирует все символы внутри ширины страницы. (Опять же, этот абзац иллюстрирует выравнивание по центру.)
В "правильном" режиме текст абзаца выравнивается по правому полю. (Обратите внимание, как этот текст выровнен по правому краю.)
Режим «оба» добавляет дополнительный интервал между словами, так что строки становятся шире и занимают всю ширину абзаца, за исключением последней строки, которая выравнивается по левому краю. (Этот абзац является демонстрацией этого.)
Изображения
DOCX поддерживает два типа изображений: встроенные и плавающие.
Встроенные изображения появляются внутри абзаца вместе с другими символами и используются вместо использования (текст). Идентификатор изображения можно найти с помощью следующего синтаксиса xpath:
Идентификатор изображения используется для поиска имени файла в файле word/_rels/document.xml.rels и должен указывать на файл gif/jpeg внутри подпапки word/media. (См. файл word/_rels/document.xml.rels проекта github, где вы можете увидеть идентификатор изображения.)
Плавающие изображения размещаются относительно абзацев, а текст обтекает их. (Вот пример документа проекта github с плавающим изображением.)
Плавающие изображения используются вместо , поэтому, если вы удаляете какой-либо текст внутри , будьте осторожны с якорями, если вы не хотите, чтобы изображения были удалены.
Таблицы
, сама таблица, имеет свойства таблицы, и каждое свойство столбца представлено внутри.Строки следуют одна за другой в виде тегов, и каждая строка должна иметь такое же количество столбцов, как указано в:
Ширина столбцов таблицы может быть указана в теге, но если вы не укажете ее, MS Word будет использовать свои внутренние алгоритмы, чтобы найти оптимальную ширину столбцов для наименьшего эффективного размера таблицы.
Единицы
Многие атрибуты XML внутри DOCX указывают размеры или расстояния. Хотя внутри XML они представляют собой целые числа, все они имеют разные единицы измерения, поэтому необходимо некоторое преобразование. Тема сложная, поэтому я бы порекомендовал эту статью Ларса Корнелиуссена о единицах измерения в файлах DOCX. Таблица, которую он представляет, полезна, хотя и с небольшой опечаткой: дюймы должны быть pt/72, а не pt*72.
Вот шпаргалка:
ОБЫЧНЫЕ ПРЕОБРАЗОВАТЕЛИ ЕДИНИЦ DOCX XML | ||||||
20-я точка | Точки dxa/20 | Дюймы pt/72 | Сантиметры in*2,54 | Половинный размер шрифта pt/144 | EMU in*914400 | |
Пример | 11906 td> | 595,3 | 8,27… | 21,00086… | 4,135 | 7562088 |
Теги, использующие это | pgSz/pgMar/w:spacing | w:sz | wp:extent, a:ext |