Excel for Microsoft 365 Word for Microsoft 365 PowerPoint for Microsoft 365 Excel 2021 Word 2021 PowerPoint 2021 Office 2021 Excel 2019 Word 2019 PowerPoint 2019 Office 2019 Excel 2016 Word 2016 PowerPoint 2016 Office 2016 Excel 2013 Word 2013 PowerPoint 2013 Office 2013 Excel 2010 Word 2010 PowerPoint 2010 Office 2010 Office 2007 More…Less
Starting with the 2007 Microsoft Office system, Microsoft Office uses the XML-based file formats, such as .docx, .xlsx, and .pptx. These formats and file name extensions apply to Microsoft Word, Microsoft Excel, and Microsoft PowerPoint. This article discusses key benefits of the format, describes the file name extensions and discusses how you can share Office files with people who are using earlier versions of Office.
In this article
What are the benefits of Open XML Formats?
What are the XML file name extensions?
Can different versions of Office share the same files?
What are the benefits of Open XML Formats?
The Open XML Formats include many benefits — not only for developers and the solutions that they build, but also for individual people and organizations of all sizes:
-
Compact files Files are automatically compressed and can be up to 75 percent smaller in some cases. The Open XML Format uses zip compression technology to store documents, offering potential cost savings as it reduces the disk space required to store files and decreases the bandwidth needed to send files via e-mail, over networks, and across the Internet. When you open a file, it is automatically unzipped. When you save a file, it is automatically zipped again. You do not have to install any special zip utilities to open and close files in Office.
-
Improved damaged-file recovery Files are structured in a modular fashion that keeps different data components in the file separate from each other. This allows files to be opened even if a component within the file (for example, a chart or table) is damaged or corrupted.
-
Support for advanced features Many of the advanced features of Microsoft 365 require the document to be stored in the Open XML format. Things like AutoSaveand the Accessibility Checker, for two examples, can only work on files that are stored in the modern Open XML format.
-
Better privacy and more control over personal information Documents can be shared confidentially, because personally identifiable information and business-sensitive information, such as author names, comments, tracked changes, and file paths can be easily identified and removed by using Document Inspector.
-
Better integration and interoperability of business data Using Open XML Formats as the data interoperability framework for the Office set of products means that documents, worksheets, presentations, and forms can be saved in an XML file format that is freely available for anyone to use and to license, royalty free. Office also supports customer-defined XML Schemas that enhance the existing Office document types. This means that customers can easily unlock information in existing systems and act upon it in familiar Office programs. Information that is created within Office can be easily used by other business applications. All you need to open and edit an Office file is a ZIP utility and an XML editor.
-
Easier detection of documents that contain macros Files that are saved by using the default «x» suffix (such as .docx, .xlsx, and .pptx) cannot contain Visual Basic for Applications (VBA) macros and XLM macros. Only files whose file name extension ends with an «m» (such as .docm, .xlsm, and .pptm) can contain macros.
Before you decide to save the file in a binary format, read Can different versions of Office share the same files?
How do I convert my file from the old binary format to the modern Open XML format?
With the file open in your Office app, click File > Save as (or Save a copy, if the file is stored on OneDrive or SharePoint) and make sure the Save as type is set to the modern format.
This will create a new copy of your file, in the Open XML format.
What are the XML file name extensions?
By default, documents, worksheets, and presentations that you create in Office are saved in XML format with file name extensions that add an «x» or an «m» to the file name extensions that you are already familiar with. The «x» signifies an XML file that has no macros, and the «m» signifies an XML file that does contain macros. For example, when you save a document in Word, the file now uses the .docx file name extension by default, instead of the .doc file name extension.
When you save a file as a template, you see the same kind of change. The template extension used in earlier versions is there, but it now has an «x» or an «m» on the end. If the file contains code or macros, you must save it by using the new macro-enabled XML file format, which adds an «m» for macro to the file extension.
The following tables list all the default file name extensions in Word, Excel, and PowerPoint.
Word
XML file type |
Extension |
Document |
.docx |
Macro-enabled document |
.docm |
Template |
.dotx |
Macro-enabled template |
.dotm |
Excel
XML file type |
Extension |
Workbook |
.xlsx |
Macro-enabled workbook |
.xlsm |
Template |
.xltx |
Macro-enabled template |
.xltm |
Non-XML binary workbook |
.xlsb |
Macro-enabled add-in |
.xlam |
PowerPoint
XML file type |
Extension |
Presentation |
.pptx |
Macro-enabled presentation |
.pptm |
Template |
.potx |
Macro-enabled template |
.potm |
Macro-enabled add-in |
.ppam |
Show |
.ppsx |
Macro-enabled show |
.ppsm |
Slide |
.sldx |
Macro-enabled slide |
.sldm |
Office theme |
.thmx |
Can different versions of Office share the same files?
Office lets you save files in the Open XML Formats and in the binary file format of earlier versions of Office and includes compatibility checkers and file converters to allow file-sharing between different versions of Office.
Opening existing files in Office You can open and work on a file that was created in an earlier version of Office, and then save it in its existing format. Because you might be working on a document with someone who uses an earlier version of Office, Office uses a compatibility checker that verifies that you have not introduced a feature that an earlier version of Office does not support. When you save the file, the compatibility checker reports those features to you and then lets you remove them before continuing with the save.
Need more help?
Документы в формате XML запускаются в любых текстовых редакторах, браузерах, а также в специальных онлайн-сервисах. Расскажем, как открыть файл XML: с тегами и без них, только для просмотра или для редактирования.
Содержание
- XML: что за формат и где часто используется
- Программы для просмотра и редактирования файлов XML
- Word
- Excel
- Стандартный «Блокнот»
- Через Google Chrome и другие браузеры
- NotePad++
- Онлайн-сервисы для редактирования файлов XML
- XmlGrid
- TutorialsPoint
XML – язык разметки. С помощью него пользователи группируют, структурируют данные, которые представлены в виде обычного текста или таблицы. Для создания структуры (иерархии) используют самописный синтаксис – теги. Их придумывает сам автор документа. На рисунке ниже показан текст, обернутый в произвольные теги: <to> (от кого послание), <from> (кому), <heading> (заголовок послания), <body> (само послание).
Язык XML используют для передачи данных между разными видами приложений без потери их структуры. Формат отличается надежностью. Повредить информацию в таких файлах сложнее, поэтому документы, которые публикуют в интернете, часто идут именно с этим расширением. Файлы xml встречаются на ГосУслугах, в Росреестре и на других государственных сайтах.
Документ xml можно открыть разными способами. Выбор программы или веб-сервиса зависит от того, в каком виде должен быть представлен текст: с тегами или без них, с возможностью редактирования или просто чтение.
Только просмотр текста/таблицы доступен в любом браузере, в Microsoft Word и Excel. Редактировать файл можно в онлайн-сервисах и в стандартном «Блокноте» в Windows.
Программы для просмотра и редактирования файлов XML
Программы Microsoft Office есть практически на каждом компьютере с Windows, поэтому часто для запуска xml не нужно ничего дополнительно устанавливать.
Если Офиса у вас нет, и вы не хотите скачивать целый пакет, чтобы открыть один единственный файл, воспользуйтесь «Блокнотом» или сторонним приложением NotePad++.
Word
Чтобы установить Word на ПК, нужно скачать целый пакет Microsoft Office, где будет сам текстовый редактор, Excel (для работы с таблицами) и Power Point (для создания презентаций).
Не все версии Microsoft Word умеют открывать документы xml без тегов. Подойдут варианты Word 2007 и выше. Версии ниже показывают информацию только с тегами.
В Word вы сможете просматривать текст, отправлять его на печать в принтер. Редактирование документа здесь недоступно.
Как открыть файл XML в Word:
- Нажмите правой кнопкой мыши на файл xml – при этом не важно, где он находится: на рабочем столе или в папке на жестком диске.
- Наведите стрелку на пункт «Открыть с помощью». Выберите программу Word. Если ее нет в списке, нажмите «Выбрать другое приложение».
- В появившемся меню нажмите на «Microsoft Word». При желании поставьте галочку под списком приложений, чтобы система открывала xml-файлы с помощью Word. Щелкните по «ОК».
- Подождите, пока запустится файл с текстом.
Excel
Если данные документа представлены в виде таблицы, используйте другую программу из пакета Microsoft Office – инструмент Excel.
Открыть документ в Excel можно таким же образом, как и в Word. Кликнуть по файлу правой клавишей, а затем в списке «Открыть с помощью» выбрать Excel.
Если Excel в списке не оказалось, используйте другой метод запуска:
- Если у вас Windows 10, нажмите на иконку в виде лупы справа от кнопки «Пуск». Вбейте в поисковую строку слово «excel».
- В верхней области панели появятся результаты поиска – нажмите на «Microsoft Excel», чтобы запустить программу.
- В интерфейсе приложения нажмите на «Файл». Выберите пункт «Открыть».
- В «Проводнике Windows» найдите документ xml. Выделите его левой кнопкой мыши и нажмите «Открыть».
- Выберите способ открытия файла, например, XML-таблица. Нажмите на «ОК».
- Подождите, пока загрузится таблица. Если она большая, процесс займет некоторое время.
Стандартный «Блокнот»
В «Блокноте» откроется текст, обернутый в теги. При необходимости вы сможете его отредактировать в окне.
Запустить файл можно через то же контекстное меню документа. Выбираете «Открыть с помощью», нажимаете на «Блокнот».
Если «Блокнота» в списке приложений не оказалось, используйте другой способ:
- Откройте пустое окно «Блокнота». Для этого найдите программу через поиск Windows 10. Введите название приложения в строке поиска – выберите «Блокнот» в результатах запроса.
- Теперь зажмите мышкой файл xml (на рабочем столе либо в папке в «Проводнике») и перетащите его на пустое окно «Блокнота».
- Подождите, пока документ откроется.
Через Google Chrome и другие браузеры
Для Google Chrome и любого другого браузера действует тот же способ запуска: через пункт «Открыть с помощью» в контекстном меню файла. Можно выбрать «Гугл Хром» или любой другой веб-обозреватель: Internet Explorer, Yandex, Opera и т. д.
Еще один способ – перетаскивание файла на окно браузера. Откройте новую пустую вкладку обозревателя (обычно это иконка в виде плюса на панели с вкладками). Перетащите файл xml мышкой на любую область пустой вкладки.
Подождите, пока браузер загрузит документ в свое окно.
NotePad++
В NotePad++ можно читать и редактировать готовые xml-документы, а также создавать новые. Приложение также работает с другими форматами веб-файлов, например, с YML.
При установке программы можно выбрать русский язык интерфейса. Плюс NotePad++ в том, что она выделяет корневую структуру кода, что упрощает работу с документом. В «Блокноте», к примеру, теги идут чуть ли не сплошным текстом.
Как открыть XML-файл в NotePad++:
- Запустите приложение и нажмите на раздел «File» («Файл»). В меню выберите «Open» («Открыть»).
- Либо сразу после запуска программы зажмите комбинации клавиш Ctrl + O. Также можно нажать на вторую иконку «Open» на панели инструментов, которая находится чуть ниже.
- В «Проводнике Windows» найдите документ xml. Выберите его левой кнопкой мыши и нажмите на «Открыть».
- Подождите, пока загрузится файл со структурой кода.
Онлайн-сервисы для редактирования файлов XML
Для работы онлайн-сервисов понадобится стабильный скоростной интернет. Рассмотрим два инструмента: XML Grid и TutorialsPoint.
XmlGrid
Сервис простой и функциональный. Здесь можно создавать свои файлы xml, редактировать готовые документы. Документ можно загрузить двумя способами: вставить ссылку на файл в интернете либо загрузить физический документ с жесткого диска ПК.
Интерфейс у сервиса на английском языке, но разобраться в нем сможет каждый:
- Откройте веб-сервис. Нажмите на «Open File», если документ находится на жестком диске вашего ПК. В «Проводнике Windows» найдите файл, выделите его левой кнопкой мыши – нажмите «Открыть».
- Кликните «Submit», чтобы система начала загрузку файла. Подождите некоторое время, пока она завершится.
- Если у вас есть ссылка на файл в интернете, кликните по «By URL». Вставьте скопированную ссылку в поле и нажмите «Submit».
- Подождите, пока откроется структура файла (список главных веток).
- Чтобы изменить название ветки, просто нажмите на ее название. Включится режим редактирования: удалите старую надпись и введите новую.
- Чтобы отредактировать текст, откройте ветку, в которой он находится. Для этого нажмите на стрелку слева от ее названия. Теперь выберите левой кнопкой синее поле для редактирования.
- Выберите пункт «Edit» в контекстном меню.
- Введите нужный текст в синее поле.
- Чтобы увидеть результат редактирования (структуру текста в целом), нажмите на стрелку над таблицей.
- В меню выберите «Show XML Source Code».
- Подождите, пока откроется дополнительное окно с текстом и тегами. Чтобы закрыть окно, нажмите на крестик в правом верхнем углу.
- Когда закончите редактирование, нажмите на иконку «Save» справа от кнопок «Validate» и «Textview». Выберите папку на жестком диске для сохранения файла.
TutorialsPoint
Сервис работает с множеством файлов: XML-документы, изображения, программные коды. Интерфейс тоже на английском языке.
Как работать в сервисе:
- Перейдите на сайт инструмента. Выберите кнопку «XML Editor».
- Нажмите на «Upload File». Выберите способ загрузки с помощью URL (ссылка на файл в интернете) либо загрузка документа с ПК («Upload from Computer»). В первом случае вставьте скопированную ранее ссылку и нажмите «Go». Во втором случае выберите файл в окне «Проводник Windows» и нажмите «Открыть».
- В разделе «Editable XML Code» появится содержимое файла xml. В нем можно менять текст и теги как в обычном редакторе.
- По мере редактирования в правой части окна «XML Tree» данные тоже меняются: вместо старого текста и тегов появляются новые. Этот режим удобно использовать для визуальной оценки файла.
- Когда закончите редактирование, нажмите на «Download» справа вверху, чтобы скачать измененный документ обратно на ПК.
Если вам нужно лишь прочитать содержимое файла xml, выбирайте браузер, Word или Excel (если документ представлен в виде таблицы, а не обычным текстом). Для редактирования можно использовать стандартный «Блокнот», стороннюю программу NotePad++ либо онлайн-сервисы: XML Grid или TutorialsPoint.
Docx – формат текстовых файлов MS Office, который вряд ли нуждается в презентации. Дело в том, что документы указанного расширения сегодня применяются повсеместно, и относятся к числу самых популярных как среди рядовых пользователей, так и учителей, педагогов, писателей и т.д. Формат файла docx появился в 2007 году, после чего регулярно подвергался модернизации, собственно, тенденция продолжается. В настоящее время документы MS Office можно открыть не только с помощью указанного пакета программ, но и за счет других бесплатных редакторов, «просмотрщиков». Чаще всего, программы для открытия docx предусматривают чтение и редактирование электронных таблиц, презентаций, текста и прочего. Рассмотрим самые популярные бесплатные варианты, и сделаем вывод относительно наиболее удобного из них для работы с описанным стандартом документов.
- Небольшой вес офисного пакета с быстрой установкой
- Загрузка и редактирование документов без зависаний
- Работа со всеми известными форматами документов
Скачать
Бесплатно Windows Office
Windows XP / Vista / 7 / 8 / 10 Версия: 1.4 29.10.2019
Размер файла: 43 МБ.
Как открыть файл в формате .docx?
Вначале разберемся с содержимым данного стандарта. Как известно, файлы с расширением .docx включают текст, картинки, стили форматирования, рисованные элементы. Такие документы создают в программе Microsoft Word, но их можно открывать и редактировать при помощи другого софта. Стоит добавить, что в отличие от расширения .DOC, включающего информацию в одном бинарном файле, данные типы документов основаны на открытом формате XML. Их основная суть в том, чтобы сделать содержание документов более доступным. Говоря о том, чем открыть файл DOCX, здесь ассортимент велик: от ранних версий Word 2007 до более удобных и универсальных бесплатных редакторов, включая Windows Office. В последнем случае не придется дополнительно загружать расширения для работы с другими стандартами офисных программ.
Программа Windows Office для открытия DOCX файлов
Если ассоциации на вашем ПК настроены правильно, вам не придется разбираться с тем, как открыть docx — будет достаточно дважды кликнуть мышкой по документу при помощи приложения Windows Office. В свойствах документа можно настроить открытие данного разрешения указанной программой по умолчанию. Если правильное применение разрешения не настроено, то при нажатии по файлу откроется окно, в котором Вы сможете указать путь к программе для работы с файлами docx. В нашем случае это Windows Office. Собственно, на этом всё. В дальнейшем, чтобы просмотреть или отредактировать документ никаких дополнительных действий помимо двойного клика мышкой по файлу не потребуется. Стоит добавить, что предложенная утилита отличается небольшим весом, быстро устанавливается и регулярно в автономном режиме.
Бесплатно Windows Office
Windows XP / Vista / 7 / 8 / 10 Версия: 1.0 04.12.2015
Размер файла: 45,2 МБ.
Начиная с Microsoft Office 2007, в Microsoft Office используются форматы файлов на основе XML, например DOCX, XLSX и PPTX. Эти форматы и расширения имен файлов применяются к Microsoft Word, Microsoft Excel и Microsoft PowerPoint. В этой статье приводятся основные преимущества формата, описаны расширения имен файлов и описаны способы предоставления общего доступа к файлам Office пользователям, использующим более ранние версии Office.
Каковы преимущества форматов Open XML?
Форматы Open XML включают большое количество преимуществ — не только для разработчиков и тех решений, которые они создают, но и для отдельных пользователей и организаций любого размера:
Компактные файлы Файлы автоматически сжимаются, а в некоторых случаях они могут быть не менее 75%. В формате Open XML для хранения документов используется технология сжатия ZIP, что позволяет экономить деньги, так как уменьшает объем дискового пространства, необходимого для хранения файлов, и снижает пропускную способность, необходимую для отправки файлов по электронной почте, через сети и через Интернет. При открытии файла он автоматически размещается в архиве. При сохранении файла он автоматически заархивирован. Для открытия и закрытия файлов в Office не нужно устанавливать специальные служебные программы для работы с ZIP.
Улучшенные возможности восстановления поврежденных файлов. Файлы имеют модульную структуру, поэтому различные компоненты данных файла хранятся отдельно друг от друга. Это позволяет открывать файлы даже в том случае, если компонент в файле (например, диаграмма или таблица) поврежден или поврежден.
Поддержка дополнительных функций Многие дополнительные возможности Office 365 требуют, чтобы документ хранился в формате Open XML. Такие вещи , как автосохранение и Проверка читаемости: в двух примерах можно работать только с файлами, которые ХРАНЯТСЯ в формате Open XML.
Улучшенная конфиденциальность и дополнительный контроль над персональными данными. Доступ к документам может быть конфиденциальным, так как личные данные и конфиденциальные сведения, такие как имена авторов, примечания, исправления и пути к файлам, можно легко идентифицировать и удалить с помощью инспектора документов.
Улучшенная интеграция и совместимость бизнес-данных. Использование форматов Open XML в качестве платформы взаимодействия с данными для набора Office позволяет сохранять документы, листы, презентации и формы в формате XML-файлов, которые можно бесплатно использовать для пользователей и лицензий. Кроме того, Office поддерживает пользовательские XML-схемы, которые улучшают существующие типы документов Office. Это означает, что пользователи могут легко разблокировки информации в существующих системах и работать с ними в знакомых программах Office. Информация, созданная в Office, может быть легко использована другими бизнес-приложениями. Все, что нужно для открытия и редактирования файла Office — это служебная программа ZIP и редактор XML.
Упрощенное обнаружение документов, содержащих макросы. Файлы, сохраненные с использованием суффикса x, используемого по умолчанию (например, DOCX, XLSX и PPTX), не могут содержать макросы Visual Basic для приложений (VBA) и макросы XLM. Макросы могут содержать только те файлы, расширения имен которых заканчиваются на «м» (например, DOCM, xlsm и PPTM).
Если вы хотите сохранить файл в двоичном формате, чтение может иметь разные версии Office.
Как преобразовать файл из старого двоичного формата в современный формат Open XML?
Открыв файл в приложении Office, щелкните файл> Сохранить как (или сохранить копию, если файл хранится в OneDrive или SharePoint) и убедитесь, что для типа сохранить как задан современный формат.
Это приведет к созданию новой копии файла в формате Open XML.
Что такое расширения имени XML-файла?
По умолчанию документы, листы и презентации, созданные в Office, сохраняются в формате XML с расширениями имен файлов, которые добавляют «x» или «m» к расширениям имен файлов, с которыми вы уже знакомы. «X» обозначает XML-файл без макросов, а «m» обозначает XML-файл, который содержит макросы. Например, при сохранении документа в Word файл теперь использует расширение имени DOCX-файла по умолчанию вместо расширения DOC-файла.
При сохранении файла в качестве шаблона отображаются изменения такого же вида. Расширение шаблона, используемое в более ранних версиях, теперь содержит «x» или «m» в конце. Если файл состоит из кода или макросов, необходимо сохранить его с помощью нового формата XML-файлов с поддержкой макросов, который добавляет «m» для макроса к расширению файла.
В приведенных ниже таблицах перечислены все расширения имен файлов по умолчанию в Word, Excel и PowerPoint.
Office Open XML – это целая серия форматов документов, создаваемых и используемых в MSOffice. К ним относятся:
Известны случаи, когда возникают неполадки при открытии и редактировании файла. В этой статье будут рассмотрены основные причины возникновения ошибки «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого» при открытии, а также способы решения данной проблемы.
Скриншот ошибки «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого»
Причины возникновения ошибки в Ворд
Самая распространенная ошибка открытия файла с расширением .docx имеет следующую формулировку: «Не удается открыть файл OfficeOpen XML.docx из-за ошибок его содержимого». На месте «Office Open XML», соответственно, должно быть название текущего документа, в работе с которым возникли неполадки.
Проблема может возникнуть внезапно или иметь какие-то предшествующие причины, например, сложности с последним сохранением файла или неполадки, возникшие при последнем редактировании файла. Вне зависимости от специфики возникновения неполадок, данная проблема решается общими методами.
Как исправить «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого»
Для начала, необходимо проанализировать, какие типы файлов находятся в документе и которые из них необходимо восстановить. Документ Office Open XML может содержать следующие типы информации:
- текстовые данные;
- изображения;
- гиперссылки;
- таблицы;
- диаграммы;
- различные формы;
- закладки и многое другое.
Проще всего восстановлению поддаются текстовые данные. Для открытия следующего типа данных можно использовать текстовый редактор Notepad++, который имеет нумерацию строк и подсветку синтаксиса. При использовании данной программы будет утеряно все форматирование файла .docx, однако, удастся сохранить данные и восстановить их.
Еще один способ восстановления документа Office Open XML посредством программы Adobe In Design:
- поменять расширение файла (.docx или .xml на .txt);
- открыть программу InDesign и создать в ней новый текстовый фрейм, куда перетащить курсором файл с новым расширением .txt;
- использовать открывшиеся данные или воспользоваться поиском конкретного текста посредством функции «найти и заменить».
Восстановление файла встроенными функциями Windows
Вне зависимости от установленной версии Windows, каждая сборка предполагает наличие такого простого редактора, как Word Pad. Он не имеет широких возможностей форматирования текста, зато может быть полезен в подобных ситуациях. Для того, чтобы использовать эту программу, необходимо кликнуть на документе правой кнопкой мыши и в открывшемся списке нажать на «Открыть с помощью…». В появившемся окне появится иконка программы WordPad, которая поможет открыть не только текстовую информацию, но и изображения с гиперссылками.
Использование программы Xml Pad
Бесплатная утилита, которую можно свободно скачать в сети. Эта программа проста в установке, она позволяет просматривать и редактировать несколько типов файлов, но нас интересует только .xml, поэтому необходимо кликнуть на него. Затем необходимо открыть «битый» файл посредством этой программы и приступить к редактированию. Основное преимущество данной программы заключается в том, что она показывает строку, которая вызывает ошибку при открытии файла. В некоторых случаях достаточно удалить или редактировать данную строку, чтобы вернуть файл в рабочее состояние. Если же данный метод не сработает, то придется извлечь все текстовые данные, перенести их в новый файл и сохранить, создав новое форматирование вручную.
Совет: Следует всегда сохранять резервную копию файла и хранить ее либо на внешнем диске, либо в другой директории. Это поможет исключить возникновение подобных «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого» проблем.
Видео в котором используется метод открытия файла посредством программы Notepad ++:
Содержание
- 1 Открытие файлов в читаемом виде
- 1.1 Word
- 1.2 Excel
- 2 Открытие файлов для редактирования
- 2.1 Notepad++
- 2.2 Онлайн-сервисы
- 3 Подводим итоги
Необходимость открыть файлы формата XML у обычных юзеров возникает довольно часто. Например, подобное расширение используется в некоторых электронных документах на портале Госуслуг. Как решить представленную задачу?
Открытие файлов в читаемом виде
Внутри файлов формата XML находится обычная текстовая информация. Поэтому открыть подобные документы можно с помощью любого редактора, например классического приложения «Блокнот». Однако текст будет отображаться с тегами. На печать такой документ не отправить. Открыть XML в читабельном виде удастся с помощью Word и Excel.
Word
Открыть файлы ISO в Word невозможно. Однако посмотреть документ XML в читаемом виде не составит никакого труда. При необходимости его можно сразу распечатать на принтере. Весь процесс проходит в 3 этапа:
- Запускаем Ворд и нажимаем на кнопку «Файл».
- Выбираем раздел «Открыть», переходим в подраздел «Компьютер» и указываем на опцию «Обзор».
- Ищем файл с форматом XML и нажимаем на кнопку «Открыть».
- Документ отобразится в читаемом виде — без тегов и других сторонних элементов.
Excel
Работать с указанными файлами можно и в Excel. Принципиальной разницы в этом случае не существует:
- Запускаем Excel и нажимаем на кнопку «Файл».
- Выбираем пункт «Открыть», переходим в раздел «Компьютер» и кликаем на «Обзор».
- Находим файл XML и нажимаем на кнопку «Открыть».
- Ставим галочку напротив пункта «XML-таблица» и подтверждаем действие.
- В итоге документ примет вид классической таблицы.
После этого основную информацию можно редактировать любым способом, но добавлять собственные теги не получится. Как видно, сделать документы XML читабельными не сложнее, чем распаковать файлы из архива. Причем в большинстве случаев для этого даже не потребуется устанавливать дополнительное ПО.
Открытие файлов для редактирования
Иногда пользователю необходимо не только открыть файл XML, но и отредактировать его. Сделать это можно в простом приложении «Блокнот». Вот только работать там не очень удобно. Лучше сразу использовать более мощные инструменты:
- Notepad++;
- онлайн-сервисы.
Notepad++
Указанное приложение — классическая программа для работы с документами XML. В Notepad++ можно редактировать файлы и других форматов, например YML. Чтобы открыть нужный документ, необходимо воспользоваться следующим алгоритмом:
- Запускаем Notepad++, нажимаем на кнопку «Файл» и в контекстном меню выбираем опцию «Открыть».
- Находим нужный документ.
- После этого можно вносить требуемые корректировки, добавлять или удалять теги. Программа выделяет корневую структуру, что упрощает работу с файлами XML.
Онлайн-сервисы
Сейчас создано множество ресурсов, позволяющих работать с разными документами онлайн. Например, некоторые сервисы помогут быстро открыть файлы PDF, DjVu и многих других форматов. Для редактирования и чтения XML чаще всего используют:
- XML Grid;
- TutorialsPoint.
Оба сайта дают возможность открыть и изменить документы с расширением XML в режиме онлайн. Естественно, без подключения к Интернету воспользоваться представленными инструментами не получится.
XML Grid
Очень простой и лаконичный ресурс. Открыть документ XML с его помощью можно в несколько кликов мышью:
- Переходим на сайт XML Grid — xmlgrid.net и нажимаем на кнопку «Open File».
- Кликаем на «Выберите файл».
- Находим документ XML.
- Выбираем опцию «Submit».
- В итоге перед пользователем будет представлена нормальная табличная форма документа.
- Чтобы отредактировать сам код и внести в него правки, нужно нажать на корневую ветку и выбрать опцию «Show XML Source Code».
- Откроется новое окно, где и можно вести всю работу.
TutorialsPoint
Еще один удобный инструмент, позволяющий работать с файлами формата XML онлайн. Ресурс обладает интуитивным и приятным интерфейсом. Открыть нужный документ не составит никакого труда:
- Заходим на сайт TutorialsPoint — tutorialspoint.com и нажимаем на кнопку «Online Tutors».
- В открывшемся окне выбираем раздел «Tools».
- Переходим в «XML Editor».
- Нажимаем на кнопку «Загрузить файл» и выбираем опцию «Загрузить с компьютера».
- Ищем документ.
- После этого можно вносить нужные корректировки и изменять структуру файла.
- При необходимости удастся загрузить документ XML не с компьютера, а со стороннего ресурса. Для этого в разделе «Загрузить файл» нужно указать адрес документа (URL) и нажать на кнопку Enter.
Подводим итоги
Открыть CDR можно разными способами. Это утверждение характерно и для формата XML. Если необходимо привести документы подобного типа в читаемый вид, лучше воспользоваться возможностями Word или Excel. Отредактировать файл получится либо установленной на компьютер программой, либо каким-нибудь онлайн-ресурсом.
Table of Contents
- Introduction
- What is Open XML
- Why use Open XML
- Installation
- Using Open XML
- Taking small steps
- Repetitive code
- Building blocks
- Alternate methods to using Open XML.
- Code samples
- Integration into your solution
- References
- Tools
- See also
- Requires
- Summary
- Source code
Introduction
This article will provide a solid base for performing common operations in Microsoft Word document 2007 format using Open XML SDK 2.5 for Office. What this article does not cover are drilling down each element type such as a paragraph element or what makes
up a specific type of style be it for a paragraph or a table.
The intent is to provide examples for developers who have never worked with Open XML for Office documents to create documents quickly without getting into all the specifics
What is Open XML
Open XML is an open ECMA 376 standard and is also approved as the ISO/IEC 29500 standard that defines a set of XML schemas for representing spreadsheets, charts, presentations, and word processing documents. Microsoft Office Word 2007, Excel 2007, PowerPoint
2007, and the later versions all use Open XML as the default file format.
A document (WordprocessingML document) is organized around the concept of stories. A story is a region of content in a WordprocessingML document.
Not all stories must be present in a valid WordprocessingML document. The simplest, valid WordprocessingML document only requires a single story—the main document story. In WordprocessingML, the main document story is represented by the main document part.
At a minimum, to create a valid WordprocessingML document using code, add a main document part to the document. In the code samples provided, the first code sample creates a document only with the main document part.
public
bool
CreateEmptyDocument(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if
(File.Exists(fileName))
{
File.Delete(fileName);
}
using(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
mainPart.Document.AppendChild(
new
Body());
mainPart.Document.Save();
}
returnHelpers.ValidateWordDocument(fileName) == 0;
}
The main document story of the simplest WordprocessingML document consists of the following XML elements:
document | The root element for a WordprocessingML’s main document part, which defines the main document story. |
body | The container for the collection of block-level structures that comprise the main story. |
p paragraph | Paragraph para = body.AppendChild(new Paragraph()); |
r run | runPara = para.AppendChild(new Run()); |
trange of text | runPara.AppendChild(new Text(“Some text in a paragraph”)); |
A simple example using the three parts above.
public
bool
CreateDocumentWithSimpleParagraph(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if(File.Exists(fileName))
{
File.Delete(fileName);
}
using
(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
var body = mainPart.Document.AppendChild(
new
Body());
Paragraph para = body.AppendChild(
new
Paragraph());
Run runPara = para.AppendChild(
new
Run());
// Set the font to Arial to the first Run.
var runProperties =
new
RunProperties(
new
RunFonts()
{
Ascii =
"Arial"
});
var color =
new
Color { Val = Helpers.ColorConverter(System.Drawing.Color.SandyBrown) };
runProperties.Append(color);
Run run = document.MainDocumentPart.Document.Descendants<Run>().First();
run.PrependChild<RunProperties>(runProperties);
var paragraphText =
"Hello from Word"
;
runPara.AppendChild(
new
Text(paragraphText));
mainPart.Document.Save();
}
return
Helpers.ValidateWordDocument(fileName) == 0;
}
Generates the following xml which can be viewed by changing the .docx file extension to .zip.
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
w:body
>
<w:p
>
<
w:r
>
<
w:rPr
>
<
w:rFonts
w:ascii
=
"Arial"
/>
<
w:color
w:val
=
"F4A460"
/>
</
w:rPr
>
<
w:t
>Hello from Word"</
w:t
>
</
w:r
>
</w:p
>
</
w:body
>
</
w:document
>
Why use Open XML
The Open XML file formats are useful for developers because they use an open standard and are based on well-known technologies: ZIP and XML. See also,
seven key benefits of Open XML by Eric White.
Installation
To work with Open XML documents a NuGet package needs to be installed by either right clicking on a Visual Studio solution, select manage NuGet packages, select the “Browse” tab, type into the search box DocumentFormat and the first item will be
DocumentFormat.OpenXml. With this item selected choose which project in your solution will use the library via clicking on the check box next to the project name and pressing the install button.
An alternate method is via Visual Studio Tool menu, select NuGet package manager, Package manager console, copy the install link from the following page into the console, press enter to install.
Using Open XML
Depending on what your objectives are using statements will be needed. To learn which using statements are required first create a class for performing operations on documents as done in the accompanying code samples (Operations.cs), for instance, copy the
method CreateEmptyDocument using section, change the file name. At this point Visual Studio will complain about not knowing what the objects are. Hover over each object, when the lightbulb appears allow it to insert the appropriate using statements.
Create a class to the new method and execute the method followed by opening the document from Windows Explorer. If the document fails to open this means the construct (code used) to create the document most likely created a malformed document. Rather than
traversing to the document in Windows Explorer copy the following code Helpers.ValidateWordDocument into your project from the accompanying source code passing in the newly created document and check for a return value of 0 which means the document should
be valid while any return value greater than 0 indicates one or more errors in the document structure. The method ValidateWordDocument as is writes the exceptions to Visual Studio’s Output window for inspection which will assist in tracking down the problem.
Caveat: Although there is very little exception handling in the source code provided does not mean you should not implement exception handling in the form of try/catch statements. The most common reason for an exception, the document already exists and is
currently open perhaps in Word as developers like to check the labor of their coding, forget to the close the document followed by running the same code again which created the document in the first place.
Taking small steps
Rather than write a document with a header, several paragraphs, images and list at once start out slow which is how the code samples were done for this reason, for easy of learning.
Step 1, create an empty document as shown below.
using
(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document = new
Document();
mainPart.Document.AppendChild(new
Body());
mainPart.Document.Save();
}
Even with this simple code it’s recommended during development time to validate the newly created document using Helpers.ValidateWordDocument. When ready for production disable this method from being called using directives are the easiest method e.g. if
in DEBUG mode run validation while in RELEASE mode don’t run the validation or perhaps do run the validation depending on your comfort level of “can something go wrong” in the wild.
Once you have studied the code above move on to adding a paragraph.
private
void
NextLevel(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if(File.Exists(fileName))
{
File.Delete(fileName);
}
using(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
var body = mainPart.Document.AppendChild(
new
Body());
var para = body.AppendChild(
new
Paragraph());
Run runPara = para.AppendChild(
new
Run());
var paragraphText =
"My first paragraph."
;
runPara.AppendChild(
new
Text(paragraphText));
mainPart.Document.Save();
}
Console.WriteLine(Helpers.ValidateWordDocument(fileName));
}
In the example above a paragraph is added to a newly created document, zero styling of text as this can get complex and as mentioned it’s best to learn in steps.
The following example adds to the above example styling the sole paragraph font color. The color for styling is in hex which many developers don’t know a hex representation of colors without referencing a conversion table. For this reason a method is provided
to translate a Color to its hex representation using Helpers.ColorConverter, pass in System.Drawing.Color.SandyBrown and get back F4A460.
private
void
NextLevel_1(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if
(File.Exists(fileName))
{
File.Delete(fileName);
}
using
(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
var body = mainPart.Document.AppendChild(
new
Body());
var para = body.AppendChild(
new
Paragraph());
Run runPara = para.AppendChild(
new
Run());
// Set the font to Arial to the first Run.
var runProperties =
new
RunProperties(
new
RunFonts()
{
Ascii =
"Arial"
});
var color =
new
Color { Val = Helpers.ColorConverter(System.Drawing.Color.SandyBrown) };
runProperties.Append(color);
Run run = document.MainDocumentPart.Document.Descendants<Run>().First();
run.PrependChild<RunProperties>(runProperties);
var paragraphText =
"Styling paragraph with font color"
;
runPara.AppendChild(
new
Text(paragraphText));
mainPart.Document.Save();
}
Console.WriteLine(Helpers.ValidateWordDocument(fileName));
}
Repetitive code
When a developer finds they are writing the same code over and over again this is a sure sign a common method may be in order. The perfect case may be adding a new paragraph yet there is not a lot of code for this to warrant a common method. A good candidate
is creating borders for a table within a document.
The following is a generic method to create borders for a table.
public
static
TableProperties CreateTableProperties()
{
return
newTableProperties(
new
TableBorders(
new
TopBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
BottomBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
LeftBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
RightBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
InsideHorizontalBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
InsideVerticalBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 })
);
}
Which is called as follows.
var table =
new
Table();
// set borders
TableProperties props = Helpers.CreateTableProperties();
table.AppendChild(props);
By writing a method as shown above not only can it be used again it clear up code for easier coding and maintenance. Another example for code reuse is for adding an image to a document as there are many parts to write code for appending an image as shown
below.
public
static
voidAddImageToBody(WordprocessingDocument document,
string
relationshipId, int
pWidth, int
pHeight)
{
// Define the reference of the image.
var element =
new
Drawing(
new
Inline(
new
Extent() { Cx = pWidth, Cy = pHeight },
new
EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new
DocProperties()
{
Id = (UInt32Value)1U,
Name =
"Picture 1"
},
new
NonVisualGraphicFrameDrawingProperties(
new
GraphicFrameLocks()
{
NoChangeAspect =
true
}),
new
Graphic(
new
GraphicData(
new
Picture(
new
NonVisualPictureProperties(
new
NonVisualDrawingProperties()
{
Id = (UInt32Value)0U,
Name =
"New Bitmap Image.jpg"
},
new
NonVisualPictureDrawingProperties()),
new
BlipFill(
new
Blip(
new
BlipExtensionList(
new
BlipExtension()
{
Uri =
"{28A0092B-C50C-407E-A947-70E740481C1C}"
})
)
{
Embed = relationshipId,
CompressionState =
BlipCompressionValues.Print
},
new
Stretch(
new
FillRectangle())),
new
ShapeProperties(
new
Transform2D(
new
Offset() { X = 0L, Y = 0L },
new
Extents() { Cx = pWidth, Cy = pHeight }),
new
PresetGeometry(
new
AdjustValueList()
)
{ Preset = ShapeTypeValues.Rectangle }))
)
)
{
DistanceFromTop = (UInt32Value)0U,
DistanceFromBottom = (UInt32Value)0U,
DistanceFromLeft = (UInt32Value)0U,
DistanceFromRight = (UInt32Value)0U
});
// Append the reference to body, the element should be in a Run.
document.MainDocumentPart.Document.Body.AppendChild(
new
Paragraph(
new
Run(element)));
}
Note the structure of the method above, rather than attempting to write this method in a conventional manner as shown next, imagine debugging this code or modifying the code. This is why formatting the code as done above makes sense for not only this example
but for any complex operation.
public
static
voidAddImageToBodyBad(WordprocessingDocument document,
string
relationshipId, int
pWidth, int
pHeight)
{
// Define the reference of the image.
var element =
new
Drawing(
new
Inline(
new
Extent() { Cx = pWidth, Cy = pHeight },
new
EffectExtent() {LeftEdge = 0L,TopEdge = 0L,RightEdge = 0L,BottomEdge = 0L},
new
DocProperties() {Id = (UInt32Value)1U,Name =
"Picture 1"
},
new
NonVisualGraphicFrameDrawingProperties(
new
GraphicFrameLocks() {NoChangeAspect =
true
}),
new
Graphic(
new
GraphicData(
new
Picture(
new
NonVisualPictureProperties(
new
NonVisualDrawingProperties() {Id = (UInt32Value)0U,Name =
"New Bitmap Image.jpg"
},
new
NonVisualPictureDrawingProperties()),
new
BlipFill(
new
Blip(
new
BlipExtensionList(
new
BlipExtension() {Uri =
"{28A0092B-C50C-407E-A947-70E740481C1C}"
})) {Embed = relationshipId,CompressionState =BlipCompressionValues.Print},
new
Stretch(
new
FillRectangle())),
new
ShapeProperties(
new
Transform2D(
new
Offset() { X = 0L, Y = 0L },
new
Extents() { Cx = pWidth, Cy = pHeight }),
new
PresetGeometry(
new
AdjustValueList() ) { Preset = ShapeTypeValues.Rectangle }))) { Uri =
"http://schemas.openxmlformats.org/drawingml/2006/picture"
})) {DistanceFromTop = (UInt32Value)0U,DistanceFromBottom = (UInt32Value)0U,DistanceFromLeft = (UInt32Value)0U, DistanceFromRight = (UInt32Value)0U });
// Append the reference to body, the element should be in a Run.
document.MainDocumentPart.Document.Body.AppendChild(
new
Paragraph(
new
Run(element)));
}
Building blocks
By breaking up building a document the maintainer of the code can better understand code flow along with adding or modifying code to create a document. In the following code example (included with accompanying source code) there are several methods (with
overloads) to add paragraphs and bullets to a document along with a method to save the document to disk. When there is a need for new functionality such as adding a header, footer or appending an image the developer writes a method for each new feature needed
rather than code everything in one method which goes back to code reusability discussed above.
using
System;
using
System.Collections.Generic;
using
System.IO;
using
System.Linq;
using
DocumentFormat.OpenXml;
using
DocumentFormat.OpenXml.Packaging;
using
DocumentFormat.OpenXml.Wordprocessing;
namespace
WordOpenXml_cs
{
/// <summary>
/// Code by Karen Payne MVP along with assistance
/// from various forum post this class has been glued
/// together.
/// </summary>
public
classDocumentWriter : IDisposable
{
private
MemoryStream _memoryStream;
/// <summary>
/// Represents the document to work on
/// </summary>
private
WordprocessingDocument _document;
/// <summary>
/// Create a new document
/// </summary>
public
DocumentWriter()
{
_memoryStream =
new
MemoryStream();
_document = WordprocessingDocument.Create(_memoryStream, WordprocessingDocumentType.Document);
var mainPart = _document.AddMainDocumentPart();
var body =
new
Body();
mainPart.Document =
new
Document(body);
}
/// <summary>
/// Append a paragraph to the document
/// </summary>
/// <param name="sentence"></param>
public
voidAddParagraph(
string
sentence)
{
List<Run> runList = ListOfStringToRunList(
new
List<
string
> { sentence });
AddParagraph(runList);
}
/// <summary>
/// Append multiple paragraphs to the document
/// </summary>
/// <param name="sentences"></param>
public
voidAddParagraph(List<
string
> sentences)
{
List<Run> runList = ListOfStringToRunList(sentences);
AddParagraph(runList);
}
/// <summary>
/// Append paragraphs from a list of Run objects.
/// </summary>
/// <param name="runList"></param>
public
voidAddParagraph(List<Run> runList)
{
var para =
new
Paragraph();
foreach
(Run runItem
in
runList)
{
para.AppendChild(runItem);
}
var body = _document.MainDocumentPart.Document.Body;
body.AppendChild(para);
}
/// <summary>
/// Append to the document a list of sentences (list of string) and create bullet list
/// </summary>
/// <param name="sentences"></param>
public
voidAddBulletList(List<
string
> sentences)
{
var runList = ListOfStringToRunList(sentences);
AddBulletList(runList);
}
/// <summary>
/// Append to the document a list of sentences (list of Run) and create bullet list
/// </summary>
/// <param name="runList"></param>
public
voidAddBulletList(List<Run> runList)
{
// Introduce bulleted numbering in case it will be needed at some point
NumberingDefinitionsPart numberingPart = _document.MainDocumentPart.NumberingDefinitionsPart;
if
(numberingPart ==
null
)
{
numberingPart = _document.MainDocumentPart.AddNewPart<NumberingDefinitionsPart>(
"NumberingDefinitionsPart001"
);
var element =
new
Numbering();
element.Save(numberingPart);
}
// Insert an AbstractNum into the numbering part numbering list. The order seems to matter or it will not pass the
// Open XML SDK productivity Tools validation test. AbstractNum comes first and then NumberingInstance and we want to
// insert this AFTER the last AbstractNum and BEFORE the first NumberingInstance or we will get a validation error.
var abstractNumberId = numberingPart.Numbering.Elements<AbstractNum>().Count() + 1;
var abstractLevel =
new
Level(new
NumberingFormat()
{
Val = NumberFormatValues.Bullet
},
new
LevelText() { Val = "·"
}) { LevelIndex = 0 };
var abstractNum1 =
new
AbstractNum(abstractLevel) { AbstractNumberId = abstractNumberId };
if
(abstractNumberId == 1)
{
numberingPart.Numbering.Append(abstractNum1);
}
else
{
var lastAbstractNum = numberingPart.Numbering.Elements<AbstractNum>().Last();
numberingPart.Numbering.InsertAfter(abstractNum1, lastAbstractNum);
}
// Insert an NumberingInstance into the numbering part numbering list. The order seems to matter or it will not pass the
// Open XML SDK Productity Tools validation test. AbstractNum comes first and then NumberingInstance and we want to
// insert this AFTER the last NumberingInstance and AFTER all the AbstractNum entries or we will get a validation error.
var numberId = numberingPart.Numbering.Elements<NumberingInstance>().Count() + 1;
var numberingInstance1 =
new
NumberingInstance() { NumberID = numberId };
var abstractNumId1 =
new
AbstractNumId() { Val = abstractNumberId };
numberingInstance1.Append(abstractNumId1);
if
(numberId == 1)
{
numberingPart.Numbering.Append(numberingInstance1);
}
else
{
var lastNumberingInstance = numberingPart.Numbering.Elements<NumberingInstance>().Last();
numberingPart.Numbering.InsertAfter(numberingInstance1, lastNumberingInstance);
}
Body body = _document.MainDocumentPart.Document.Body;
foreach
(Run runItem
in
runList)
{
// Create items for paragraph properties
var numberingProperties =
new
NumberingProperties(new
NumberingLevelReference()
{
Val = 0
},
new
NumberingId() { Val = numberId });
var spacingBetweenLines1 =
new
SpacingBetweenLines() { After = "0"
}; // Get rid of space between bullets
var indentation =
new
Indentation() { Left = "720"
, Hanging =
"360"
};
// correct indentation
var paragraphMarkRunProperties1 =
new
ParagraphMarkRunProperties();
var runFonts1 =
new
RunFonts() { Ascii = "Symbol"
, HighAnsi =
"Symbol"
};
paragraphMarkRunProperties1.Append(runFonts1);
// create paragraph properties
var paragraphProperties =
new
ParagraphProperties(
numberingProperties,
spacingBetweenLines1,
indentation,
paragraphMarkRunProperties1);
// Create paragraph
var newPara =
new
Paragraph(paragraphProperties);
// Add run to the paragraph
newPara.AppendChild(runItem);
// Add one bullet item to the body
body.AppendChild(newPara);
}
}
public
voidDispose()
{
CloseAndDisposeOfDocument();
if
(_memoryStream !=
null
)
{
_memoryStream.Dispose();
_memoryStream =
null
;
}
}
/// <summary>
/// Save document.
/// </summary>
/// <param name="pFileName">Path and file name to save to</param>
public
voidSaveToFile(
string
pFileName)
{
if
(_document !=
null
)
{
CloseAndDisposeOfDocument();
}
if
(_memoryStream ==
null
)
throw
new
ArgumentException("This object has already been disposed of so you cannot save it!"
);
using
(var fs = File.Create(pFileName))
{
_memoryStream.WriteTo(fs);
}
}
/// <summary>
/// Dispose of document object.
/// </summary>
private
voidCloseAndDisposeOfDocument()
{
if
(_document !=
null
)
{
_document.Close();
_document.Dispose();
_document =
null
;
}
}
private
staticList<Run> ListOfStringToRunList(List<
string
> sentences)
{
var runList =
new
List<Run>();
foreach
(var item
in
sentences)
{
var newRun =
new
Run();
newRun.AppendChild(
new
Text(item));
runList.Add(newRun);
}
return
runList;
}
}
}
Alternate methods to using Open XML.
A logical choice for many is Word automation which is done by adding references to Primary Interop Assemblies (PIAs) as explained in the following code sample. Using Word automation is easier to use than Open XML with drawbacks such as PIA’s must be present
on the machine creating and modifying documents along with matching the same version of DLL’s your solution is dependent on. There is a possibility of objects not being properly released which overtime can ultimately slow or crash a machine.
Another option is to use a third party library such as Aspose, e-iceblue or GemBox. These libraries are easier to use then Open XML or Word automation yet this doesn’t negate using any of these options. In the accompanying code samples there is a project
mirroring the Open XML project which uses GemBox code samples to get an idea the difference between both methods. There are no code samples for Word automation as there is a chance of failure dependent on the developer machine which attempts to run automation
code samples while the Open XML and Gembox code samples will not fail unless when attempting to run the Open XML code samples a package is missing which may be resolved by selecting restore NuGet packages from right clicking on Solution Explorer and selecting
restore NuGet packages.
Code samples
Code samples are broken down into separate methods where from top to bottom build on each other from an creating an empty document to working with list (bulleted list), images, styling, tables and simple modification of text.
You are encouraged to run each code sample once, view results then go back and run each code sample again by setting a breakpoint at the start of each code sample and run through the code to better understand what the code does.
Integration into your solution
Add the NuGet package for DocumentFormat.OpenXml as explained in the Installation section above. Create a unit test project, create a test method for each operation which will be done in your application. As the methods don’t exist Visual Studio will prompt
for you to create the method(s).
If in a test method you write
var wordOperations =
new
WordOperations();
The method does not exist, select the lightbulb and select generate class WordOperations in a new file. Once created open this file and change the class from internal to public or select “generate new type” which brings up a dialog to add this class to another
project which is the best option as the class does not need to be in the unit test project. Once this is done create methods (which of course don’t exists) and as with the creation of the class Visual Studio will create these methods and properties for you.
This style of unit test is known as TDD (Test Driven Development).
The alternate which many developers opt for is to first create Open XML code in a class project or a class in the same project which will call the Word methods, create a unit test project and add a reference to the class project to write unit test against.
The last alternate is to simply write methods, once the code executes open the newly generated or modified documents from Windows Explorer and examine the documents.
Important notes in both projects documents are created under BinDebugDocuments where if the folder Documents does not exists it will be created by a post build event (refer to project properties, build events.
References
GitHub OfficeDev/Open-XML-SDK
Tools
Open XML Package Editor for Modern Visual Studios
See also
- Excel operations with Open XML, Automation and OleDb
- Processing Power Point templates using OpenXml
Requires
To run the code samples,
Microsoft Visual Studio 2015 or higher.
Summary
This article has presented the basics to write code for most common operations for generating Word documents using Open XML with tips and suggestions to write maintainable code. There is a good deal more which Open XML can perform which as a developer becomes
comfortable with Open XML will become easier while little interaction with Open XML can be frustrating which means, take your time building on what has been examined in this article.
Source code
GitHub repo
Не удается открыть файл Office Open XML? На самом деле, это редкая проблема, которая случается не так часто.
Office Open XML представляет собой не единый формат документов, а целую серию известных форматов от компании Майкрософт. Туда входят:
«.docx»;
«.xlsx»;
«.pptx».
Подробнее, что такое Office Open XML
Сокращенно формат Office Open XML обозначается как «.ooxml». Он был внедрен в «офисный пакет» компании Майкрософт начиная с Microsoft Office 2007. Этот формат несет в себе несколько классных особенностей, например:
Улучшенное сжатие файлов. Office Open XML использует zip-сжатие для сохранения документов, что улучшает процент сжатия в несколько раз. На деле это существенно экономит место на диске, когда приходится хранить большой объем документов или отправлять документы по электронной почте.
Файлы легко восстанавливаются при повреждениях. Из-за особенной структуры хранения информации в этом формате такие документы открываются даже в тех случаях, когда какой-либо элемент документа поврежден. Например, если таблица в документе повреждена, вы все равно сможете его открыть и восстановить таблицу.
Дополнительные расширения. Часть расширений для работы с документами в Microsoft Office доступна только для формата Office Open XML.
Улучшенная совместимость. Формат Office Open XML подразумевает, что документ такого формата может быть легко открыт в любом продукте «офиса». И самое важное, что такой формат совместим между разными версиями «офисных продуктов».
И др.
Но даже у такого, казалось бы, качественного продукта знаменитой компании случаются сбои. Во время таких сбоев пользователи получают сообщение: «Не удается открыть файл Office Open XML».
Почему появляется ошибка «не удается открыть файл Office Open XML» в продуктах Office
Чаще всего такая ошибка связана с внутренним содержимым. Но самое интересное, что она возникает совершенно внезапно в тот момент, когда ее меньше всего ждешь. В любом случае такая ошибка возникает при ошибке в последнем редактировании документа в формате Office Open XML.
На самом деле, заострять свое внимание и просто гадать, почему возникли проблемы, не стоит. Лучше приступать к поиску проблем и решать их, тем более что у всех вероятных причин возникновения этой ошибки алгоритм исправления один.
Ошибка «не удается открыть файл Office Open XML»: как исправить
Чтобы исправить эту ошибку, для начала нужно провести анализ проблемного документа. Найдя проблемный фрагмент, его можно попытаться восстановить. Документ в формате «.ooxml» может содержать следующие виды информации:
обычный текст;
графическое изображение;
ссылки на веб-сайты;
таблицы с информацией;
различные диаграммы;
и многое другое.
В общем, документ в формате «.ooxml» может содержать любой компонент какого-либо продукта MS Office.
Методы исправления ошибки:
Программа «Notepad++». Отлично сработает в тех случаях, если документ в формате Office Open XML является текстовым. Notepad++ в этом случае легко откроет его и поможет восстановить текстовые данные, даже если Word не смог этого сделать. Но у такого способа есть один минус — Notepad++ не поддерживает «текстовое форматирование». Простым языком: у вас перед глазами будет только текст без заголовков и абзацев — все это нужно будет восстановить «вручную», зато сам текст сохранится полностью.
Программа «WordPad». Это малоизвестный встроенный в операционную систему Windows текстовый редактор. Он не функциональный и не имеет таких возможностей, как Notepad++ или Word, поэтому им мало кто пользуется. Но он всегда рядом и может открыть документ, когда другие «офисные программы» пишут: «не удается открыть файл Office Open XML». Наведите на проблемный файл курсор и откройте меню «Открыть с помощью…». Там найдите WordPad и откройте свой документ. Кстати, он работает с текстом, изображениями и ссылками, поэтому поможет восстановить данные этих видов.
Программа «XMLPad». Это сторонняя программа, которую нужно скачать из интернета. Она простая и бесплатная, но в вашем проблемном случае должна помочь. Она способна открыть файлы разных форматов, в том числе и формата «Office Open XML». Обычно она открывает этот формат даже в тех случаях, когда «родные» программы выдают ошибку. Но вся ее прелесть в том, что она не просто открывает проблемный документ, а еще и показывает, в какой строке и каком месте возникла ошибка, мешающая «родным» программам.
Другие «офисы». Иногда ошибка «не удается открыть файл Office Open XML» решается очень просто. Нужно поменять «офисный пакет». Чаще всего такая ошибка появляется именно у MS Office, поэтому попробуйте открыть проблемный документ в Libre Office или Open Office. Кстати, оба «офисных пакета» бесплатны и некоторым пользователям помогли решить проблему с этой ошибкой.
Заключение
Практика показала, что чаще всего ошибка «не удается открыть файл формата Office Open XML» появляется в Microsoft Office, когда в документе преобладают технические формулы, а сам документ разрастается до больших размеров. Это указывает на то, что с большими размерами и формулами у «офисного пакета» есть некоторые проблемы.
Понятно, что от формул в документе никуда не денешься, если они там должны быть. Но вот с «большими размерами» документа можно бороться. Все, что нужно делать, — это заранее сохранять небольшие резервные части своей работы. Например, вы работаете над курсовой или дипломной работой, а может, пишете книгу. В этом случае написали 50-100 страниц работы, тогда сохраните ее отдельным файлом и дальше продолжайте работу. Потом еще 50-100 страниц — опять сохраните отдельным файлом. В этом случае, если в конце с документом возникнет какая-то проблема, тогда у вас всегда будут работающие копии на руках.
Since the Microsoft Office is released, there is new file format appears. That is Office Open XML. About how to create an Office Open XML file and how to open a word 2007 XML file, they are introduced detailed in the following passage.
- Part 1: Create an Office Open XML File
- Part 2: Open a Word 2007 XML File
Part 1: Office Open XML Format File Creation
Office Open XML format is established based on XML and ZIP archiving technology. Compared to the prior versions of Microsoft Office, you can open Office component in the display window, and you can see Office file structure clearly. Take Word as example.
1. Boot up Microsoft Word 2007
2. In the new document, paste the following text:
Soaring with the American Bald Eagle
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla rutrum. Phasellus feugiat bibendum urna. Aliquam lacinia diam ac felis. In vulputate semper orci. Quisque blandit. Mauris et nibh. Aenean nulla. Mauris placerat tempor libero.
Pellentesque bibendum. In consequat, sem molestie iaculis venenatis, orci nunc imperdiet justo, id ultricies ligula elit sit amet ante. Sed quis sem. Ut accumsan nulla vel nisi. Ut nulla enim, ullamcorper vel, semper vitae, vulputate vel, mi. Duis id magna a magna commodo interdum.
3. Highlight Soaring with the American Bald Eagle
And then in the start tag and in style group, set style as title
4. Insert a picture in the document
4.1 Place the mouse pointer at the end of the first paragraph, and press Enter to insert new line
4.2 Click Insert tag, press Picture, find a picture and then insert
5. Add a document parameter
5.1 Click Microsoft Office, point to Preparation, and press Parameter
5.2 In the document properties panel, add the author name, title, topic and remark
6. Add some comments in the document
6.1 Under the review TAB, press create new comments
6.2 In the comments box, type This is my comment.
7. Save Word document
7.1 Click Microsoft Office button, and choose Save as.
7.2 In the list of document types, choose Word Document (*.docx), and type SampleWordDocument.docx in the name input box.
8. Close Microsoft Word
Part 2: Open Word 2007 XML File
1. Create a temporary directory to store folder and its component.
2. Create a Word 2007 document, including text, picture and other elements. Save as *.docx file.
3. Change the file extension to zip file
4. Double click zip file, the file will be open in a zip application program. You can look for every component of the file.
5. Extract these component into temporary directory created just now.
Related Posts:
- How to unlock Excel password free – Macro/XML
- Protect Office files with password – set/reset password
- How to open password protected Word password
- Lock Out of Office Files – How to Open