Что такое open xml sdk

Что такое open xml sdk

Что такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk

The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. It supports scenarios such as:

The official release NuGet packages for Open XML SDK are on NuGet.org:

PackageDownload
DocumentFormat.OpenXmlЧто такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk
DocumentFormat.OpenXml.LinqЧто такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk
DocumentFormat.OpenXml.FeaturesЧто такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk

The NuGet package for the latest builds of the Open XML SDK is available as a custom feed on an Azure blob. Stable releases here will be mirrored onto NuGet and will be identical. You must set up a NuGet.config file that looks similar to this:

For latests changes, please see the changelog

The package currently supports the following frameworks:

If You Have Problems

If you want to report a problem (bug, behavior, build, distribution, feature request, etc. ) with the SDK built by this repository, please feel free to post a new issue and someone will try to help.

If you have «how-to» questions please post to one of the following resources:

The functionality of the specific classes in this version of the Open XML SDK is similar to version 2.5, therefore the Open XML SDK 2.5 for Office documentation available on MSDN is still accurate.

In addition to open sourcing of the SDK, Microsoft has opened up the conceptual documentation for public review / contributions. A copy of the documentation is available for you to edit and review in GitHub.

Источник

Welcome to the Open XML SDK 2.5 for Office

This content set provides documentation and guidance for the strongly-typed classes in the Open XML SDK 2.5 for Office.

The SDK is built on the System.IO.Packaging API and provides strongly-typed classes to manipulate documents that adhere to the Office Open XML File Formats specification. The Office Open XML File Formats specification is an open, international, ECMA-376, Second Edition and ISO/IEC 29500 standard. The Open XML file formats are useful for developers because they are an open standard and are based on well-known technologies: ZIP and XML.

The Open XML SDK 2.5 simplifies the task of manipulating Open XML packages and the underlying Open XML schema elements within a package. The Open XML SDK 2.5 encapsulates many common tasks that developers perform on Open XML packages, so that you can perform complex operations with just a few lines of code.

Portions of ISO/IEC 29500:2008 1 are referenced in the SDK.

Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

In this section

See also

1 В© ISO/IEC2900:2008. This material is reproduced from ISO/IEC 29500:2008 with permission of the American National Standards Institute (ANSI) on behalf of ISO.

Источник

Исследование качества кода Open XML SDK от Microsoft

Что такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk

Введение

Office Open XML, также известный как OpenXML или OOXML, представляет собой формат на основе XML для офисных документов, включая текстовые документы, электронные таблицы, презентации, а также диаграммы, фигуры и другой графический материал. Спецификация была разработана Microsoft и принята ECMA International в 2006 году. В июне 2014 года Microsoft выпустила Open XML SDK в open source. Сейчас исходники доступны на GitHub под лицензий MIT.

Для поиска ошибок в исходном коде библиотеки использовался PVS-Studio. Это инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, C++, C# и Java. Работает в 64-битных системах на Windows, Linux и macOS.

Проект достаточно маленький и предупреждений нашлось немного. Но выбор титульной картинки основывался как раз на результатах. Уж очень много бесполезных условных операторов в коде нашлось. Мне кажется, если отрефакторить все такие места в коде, то объём заметно сократится. Вследствие чего ещё и читаемость кода повысится.

Почему Word API, а не Open XML SDK

Как Вы могли догадаться из заголовка, я продолжил использовать Word API. У этого способа достаточно много минусов:

Перечисляя всё это, я снова задумался, почему я до сих пор этим пользуюсь…

Но нет, Word API мне пока нравится больше, и вот почему.

OOXML выглядит таким образом:

Где (Word Run) — не предложение, и даже не слово, а любой фрагмент текста, имеющий атрибуты, отличные от соседних фрагментов текста.

Программируется это примерно таким кодом:

У документа специфичная внутренняя структура, и в коде нужно создавать те же самые элементы. У Open XML SDK, я считаю, недостаточно абстрактный уровень доступа к данным. Создание документа с помощью Word API будет более понятым и коротким. Особенно, когда дело дойдёт до таблиц и других сложных структур данных.

В свою очередь, Open XML SDK решает большой ряд задач. С ним можно создавать документы не только для Word, но и для Excel и PowerPoint. Наверное, для некоторых задач эта библиотека больше подходит, но я решил пока остаться на Word API. Полностью от него отказаться в любом случае не получится, т.к. для внутренних нужд мы разрабатываем плагин для Word, а там возможно использование только Word API.

Два значения для string

V3008 The ‘_rawOuterXml’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 164, 161. OpenXmlElement.cs 164

Тип string может иметь 2 типа значений: null и текстовое значение. Использовать текстовое значение определённо безопаснее, но оба подхода имеют права на существование. Вот в этом проекте значение null использовать неприемлемо и его перезаписывают на string.Empty… по крайней мере, так задумывалось. Но из-за ошибки в RawOuterXml всё же можно записать null, а потом обратиться к этому полю, получив NullReferenceException.

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

Про компактность кода

Что такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk

V3009 It’s odd that this method always returns one and the same value of ‘».xml»‘. CustomXmlPartTypeInfo.cs 31

Не знаю, имеет ли место тут какая-нибудь опечатка или просто автор кода написал «красивый» код по его мнению. Я уверен, что нет смысла возвращать из функции столько однотипных значений и код можно сильно сократить.

Это не единственное такое место. Вот ещё парочка таких предупреждений:

V3139 Two or more case-branches perform the same actions. OpenXmlPartReader.cs 560

К этому коду возникает меньше вопросов. Скорее всего, идентичные кейсы можно объединить и код станет короче и очевиднее.

Ещё несколько таких мест:

Те самые Always true/false

Настало время привести примеры кода, которые определили мой выбор титульной картинки.

V3022 Expression ‘Complete()’ is always false. ParticleCollection.cs 243

Свойство IsComplete используется 2 раза, и по коду легко понять, что его значение не изменится. Таким образом, в конце функции можно просто возвращать второе значение тернарного оператора – true.

V3022 Expression ‘_elementStack.Count > 0’ is always true. OpenXmlDomReader.cs 501

Очевидно, что если в стеке_elementStack не 0 элементов, то их больше. Код можно сократить как минимум на 8 строк.

V3022 Expression ‘rootElement == null’ is always false. OpenXmlPartReader.cs 746

Функция CreateElement не может вернуть null. Если в компании было принято правило писать методы для создания xml-нод, которые либо возвращают валидный объект, либо кидают исключение, то пользователям таких функций можно не злоупотреблять дополнительными проверками.

V3022 Expression ‘nameProvider’ is always not null. The operator ‘?.’ is excessive. OpenXmlSimpleTypeExtensions.cs 50

Оператор is имеет такой паттерн:

Если результат выражения is будет true, то в varname будет записана ненулевая ссылка, так что дополнительная её проверка на null является лишней.

V3022 Expression ‘extension == «.xlsx» || extension == «.xlsm»‘ is always false. PresentationDocument.cs 246

V3022 Expression ‘OpenSettings.MarkupCompatibilityProcessSettings == null’ is always false. OpenXmlPackage.cs 661

Свойство MarkupCompatibilityProcessSettings никогда не возвращает null. Если в геттере выясняется, что поле класса имеет значение null, то объект перезаписывается на новый. Ещё обратите внимание, что это не рекурсивный вызов одного свойства, а это одноимённые свойства из разных классов. Возможно, некоторая путаница и привела к написанию лишних проверок.

Остальные предупреждения

V3080 Possible null dereference. Consider inspecting ‘previousSibling’. OpenXmlCompositeElement.cs 380

А вот пример, где дополнительной проверки как раз не хватает. Метод PreviousSibling как раз может вернуть значение null, а результат этой функции сразу используется без проверки.

Ещё 2 опасных места:

V3093 The ‘&’ operator evaluates both operands. Perhaps a short-circuit ‘&&’ operator should be used instead. UniqueAttributeValueConstraint.cs 60

Некоторые любят применять оператор ‘&’ к логическим выражениям там, где не надо. В случае этого оператора сначала вычисляется второй операнд, независимо от результата первого. Здесь это не сильно серьёзная ошибка, но такой неаккуратный код после рефакторинга может приводить и к потенциальным исключениям NullReferenceException.

V3097 Possible exception: type marked by [Serializable] contains non-serializable members not marked by [NonSerialized]. OpenXmlPackageValidationEventArgs.cs 15

Сериализация класса OpenXmlPackageValidationEventArgs может стать неудачной из-за того, что одно из свойств забыли пометить несериализуемым. Либо необходимо доработать возвращаемый тип этого свойства до сериализуемого, иначе может возникать исключение в рантайме.

Заключение

Мы в компании любим проекты и технологии Microsoft. В разделе, где мы перечисляем Open Source проекты, проверенные с помощью PVS-Studio, мы даже выделили для Microsoft отдельный раздел. Там уже накопился 21 проект, про которые написано 26 статей. Это 27-я.

Уверен, Вас интересует, есть ли среди наших клиентов Microsoft. Ответ – да! Но не будем забывать, что это огромная корпорация, ведущая разработку по всему миру. Определённо есть подразделения, которые уже используют PVS-Studio в своих проектах, но тех, которые не используют, ещё больше! И наш опыт работы с открытыми проектами показывает, что им явно не хватает хорошего инструмента для поиска ошибок ;).

Что такое open xml sdk. Смотреть фото Что такое open xml sdk. Смотреть картинку Что такое open xml sdk. Картинка про Что такое open xml sdk. Фото Что такое open xml sdk

Ещё из новостей, кому интересен анализ кода на C++, C# и Java: мы недавно добавили поддержку стандарта OWASP и активно увеличиваем его покрытие.

Источник

Новые возможности в пакете SDK Open XML 2.5 для Office

Настоящая документация является предварительной и может быть изменена. В этом разделе описываются новые и улучшенные возможности, включенные в пакет Open XML SDK 2.5 для Office в дополнение к известным проблемам и ограничениям.

Пакет SDK Open XML 2.5 — набор классов, которые позволяют создавать и изменять документы Open XML — документам, которые соответствуют стандартным файлам Office формата Open XML. Так как пакет SDK предоставляет программный интерфейс, который позволяет напрямую управлять документами Open XML, это можно сделать без необходимости клиентских продуктов Office сами в клиентских и серверных рабочих средах. Пакет SDK позволяет создавать высокопроизводительные решения со стороны клиента или на сервере, выполняющие сложные операции с помощью только небольшой части кода программы.

В этом выпуске пакета SDK существенно расширяет поддержку для форматов файлов при добавлении новых функций.

Требования к системе

Пакет SDK Open XML 2.5 имеет следующие требования к системе:

Поддерживаемые операционные системы: Предварительная версия Windows 8, Windows 7, Windows Server 2003 с пакетом обновления 2, Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2, Windows Vista с пакетом обновления 2, Windows XP с пакетом обновления 3

Необходимые компоненты системы:.NET Framework версии 4.0, до 300 МБ доступного место на диске

Новые требования к программному обеспечению

Поддержка формата файла Office 2013 предварительной версии

Кроме совместимости с помощью классов Open XML SDK 1.0 и Open XML SDK 2.0 для классов Microsoft Office, пакет SDK Open XML 2.5 предоставляет новые классы, которые позволяют вам писать и создавать приложения для работы с расширением файлов Open XML новых функциональных возможностей Microsoft Office 2013 (см. в таблице 1). С помощью Open XML SDK 2.5 средства повышения производительности для системы Office, эти новые расширения можно просмотреть в документации по пакету SDK Open XML в левой области.

Таблица 1. Классы DocumentFormat.OpenXml.Office15

КлассОписание
DocumentFormat.OpenXml.Office15.ExcelПоддерживает новые возможности сводной таблицы, временную шкалу и другие новые возможности Excel
DocumentFormat.OpenXml.Office15.WordПоддерживает новые функции комментария (например область «Примечания») и другие новые функции Word. Например класс CommentEx считывает автор комментариев; Свойство WebVideoProperty используется для вставки видео в документе Word
DocumentFormat.OpenXml.Office15.PowerPoint, ThemeПоддерживает маркер примечания, семейство темы и другие новые возможности PowerPoint
DocumentFormat.OpenXml.Office15.DrawingПоддерживает новые диаграммы, сводные диаграммы и другие новые возможности рисунка и диаграммы
DocumentFormat.OpenXml.Office15.WebExtension WebExtentionPaneПоддерживает приложения для Office и области задач приложения для компонентов Office. Классы являются эффективными для добавления или изменения приложения для Office в файлы документов Word и Excel

Примеры кода, демонстрирующие использование эти новых классов, можно найти в новых статьях Форум пакета SDK формата Open XML, размещённых в Microsoft Developer Network.

Считывает файлы документов ISO Strict

Пакет SDK Open XML 2.5 может читать файлы в формате Strict ISO/IEC 29500. Содержимое его документа распознается как переходный при открытии документа файл формата Open XML. При сохранении файла документа сохраняется в виде переходного файла формата Open XML.

Пакет SDK Open XML 2.5 преобразует файлы ISO Strict в переходные форматированные файлы после внесения изменений в документ или при сохранении документа. При сохранении или изменении документа, документ остается в формате файла ISO Strict.

Обновленные сведения о API

ExtensionList

DocumentFormat.OpenXml.Drawing.ConnectionShapeLocks

DocumentFormat.OpenXml.Drawing.Theme

DocumentFormat.OpenXml.Drawing.ChartDrawing.NonVisualGroupShapeDrawingProperties

DocumentFormat.OpenXml.Drawing.Charts.MultiLevelStringReference

DocumentFormat.OpenXml.Drawing.Charts.NumberReference

DocumentFormat.OpenXml.Drawing.Charts.StringReference

DocumentFormat.OpenXml.Drawing.Charts.SurfaceChartSeries

DocumentFormat.OpenXml.Drawing.Diagrams.DataModelRoot

DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties

DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualGroupShapeDrawingProperties

DocumentFormat.OpenXml.Office.Drawing.NonVisualGroupDrawingShapeProperties

DocumentFormat.OpenXml.Office2010.Excel.SlicerCacheDefinition

DocumentFormat.OpenXml.Office2010.Word.DrawingGroup.NonVisualGroupDrawingShapeProperties

DocumentFormat.OpenXml.Presentation.CommentAuthor

DocumentFormat.OpenXml.Presentation.NonVisualGroupShapeDrawingProperties

DocumentFormat.OpenXml.Spreadsheet.PivotFilter

DocumentFormat.OpenXml.Spreadsheet.QueryTable

ExtensionListWithModification

DocumentFormat.OpenXml.Presentation.Comment

DocumentFormat.OpenXml.Presentation.HandoutMaster

DocumentFormat.OpenXml.Presentation.NotesMaster

DocumentFormat.OpenXml.Presentation.SlideLayout

DocumentFormat.OpenXml.Presentation.SlideMaster

Сведения, не рекомендуемые для использования API

В следующем разделе рассматривается устаревшие элементы API:

Смарт-теги

Так как смарт-теги не рекомендуются использования для Office 2010, пакет SDK Open XML 2.5 не поддерживает смарт-тег, связанный с элементами Open XML. Пакет SDK Open XML 2.5 по-прежнему может обрабатывать элементы смарт-тега как неизвестные элементы, однако средство повышения производительности Пакет SDK Open XML 2.5 для системы Office выполняет эти элементы (см. следующий список) в файлах документов Office как недопустимые теги.

Источник

Сведения о пакете Open XML SDK 2.5 для Office

Open XML — это открытый стандарт для текстовых документов, презентаций и электронных таблиц, который может быть реализован в разных приложениях на различных платформах. Open XML позволяет точно представлять существующие текстовые документы, презентации и электронные таблицы, которые кодируются в двоичных форматах, используемых приложениями Microsoft Office. Причина популярности Open XML очевидна: теперь существуют миллиарды документов, но, к сожалению, данные в них тесно связаны с программой, в которой они были созданы. Цель стандарта Open XML — снять зависимость документов от приложений Microsoft Office, в которых они были созданы, чтобы с ними можно было работать в других приложениях независимо от формата и без потери данных.

Структура пакета Open XML

Файл Open XML хранится в ZIP-архиве, чтобы уменьшить размер файла. Структуру файла Open XML можно просмотреть с помощью средства просмотра ZIP-файлов. Документ Open XML состоит из нескольких частей документа. Отношения между частями хранятся в частях документа. Формат ZIP поддерживает произвольный доступ к каждой части. Например, приложение может переместить слайд из одной презентации в другую без синтаксического анализа содержимого слайда. Также приложение может удалить все примечания из текстового документа без анализа его содержимого.

Части документа в пакете Open XML создаются в виде разметки XML. Поскольку XML — это обычный структурированной текст, вы можете просмотреть содержимое части документа с помощью средства чтения текста или выполнить синтаксический анализ содержимого с помощью таких процессов, как XPath.

Текстовые документы описываются с помощью разметки WordprocessingML. Дополнительные сведения см. в разделе Работа с документами WordprocessingML (Open XML SDK). Документ WordprocessingML состоит из набора историй, где каждая история — это одно из следующих:

основной документ (единственная обязательная история);

верхний и нижний колонтитулы;

Презентации описываются с помощью разметки PresentationML. Дополнительные сведения см. в разделе Работа с документами PresentationML (Open XML SDK). Пакет презентации может содержать следующие части документа:

Листы книги описываются с помощью разметки SpreadsheetML. Дополнительные сведения см. в разделе Работа с документами SpreadsheetML (Open XML SDK). Пакет книги может содержать следующие элементы:

часть книги (обязательная);

один или несколько листов;

Пакет Open XML SDK 1.0

Версия 1 пакета Open XML SDK упрощает управление пакетами Open XML. API-интерфейс Open XML SDK позволяет выполнять многие распространенные задачи, которые обычно выполняются с пакетами Open XML, поэтому сложные операции можно реализовать несколькими строками кода. Вот некоторые распространенные задачи:

Поиск — несколькими строками кода можно выполнить поиск произвольных данных в коллекции листов Excel 2007.

Сборка документов — вы можете создавать документы, объединяя части существующих документов программными средствами. Например, можно извлечь слайды из различных презентаций PowerPoint 2007 и создать из них одну презентацию.

Проверка — несколькими строками кода можно проверить части документа в пакете или весь пакет на соответствие схеме.

Обновление данных — с помощью объектной модели Open XML можно легко изменить данные в нескольких пакетах.

Конфиденциальность — несколькими строками кода можно удалить примечания или другие личные данные из документа перед его публикацией.

Пакет Open XML SDK 2.0 для Microsoft Office

Пакет Open XML SDK 2.0 для Microsoft Office расширил поддержку строго типизированных классов от классов частей, которые представлены в версии 1.0, до XML-содержимого каждой части. Все функции, доступные в версии 1.0, по-прежнему поддерживаются. Версия 2.0 позволяет программно обрабатывать XML-содержимое частей. Пакет SDK поддерживает программирование в стиле LINQ to XML, который упрощает написание кода для работы с XML-содержимым, по сравнению с традиционной моделью программирования W3C XML DOM.

Пакет SDK поддерживает следующие распространенные задачи и сценарии:

Строго типизированные классы и объекты — вместо использования общих функций XML для обработки данных XML, для чего требуется помнить имена всех элементов, атрибутов и значений, а также пространства имен, для решения тех же задач можно использовать пакет Open XML SDK, просто обрабатывая объекты, представляющие элементы, атрибуты и значения. Все типы схемы представлены как строго типизированные классы среды выполнения CLR, а все значения атрибутов представлены как перечисления.

Формирование, поиск и обработка содержимого — технология LINQ встроена непосредственно в SDK. Таким образом вы можете создавать функциональные конструкции и запросы с лямбда-выражениями непосредственно для объектов, представляющих элементы Open XML. Кроме того, пакет SDK позволяет легко обходить и обрабатывать содержимое, предоставляя поддержку коллекций объектов, например таблиц и абзацев.

Проверка — Open XML SDK 2.0 для Microsoft Office предоставляет возможности проверки, что позволяет проверять документы Open XML на соответствие различным вариантам формата Open XML.

Пакет Open XML SDK 2.5 для Office

Пакет SDK 2.5 Open XML предоставляет пространства имен и члены для поддержки Microsoft Office 2013. Open XML SDK 2.5 также может читать файлы в строгом формате ISO/IEC 29500. Строгий формат — это подмножество переходного формат, который не содержит устаревшие функции — это теоретически облегчает поддержку для новых разработчиков, поскольку формат более прост.

Пакет SDK поддерживает следующие распространенные задачи и сценарии:

Поддержка формата файлов Office 2013 Preview — кроме классов Open XML SDK 2.0 для Microsoft Office, Пакет SDK 2.5 Open XML предоставляет новые классы, которые позволяют создавать приложения для обработки расширений файлов Open XML новых компонентов Office 2013.

Исправления Open XML SDK 2.0 для Microsoft Office — в Пакет SDK 2.5 Open XML исправлены известные проблемы Open XML SDK 2.0 для Microsoft Office. К ним относятся потерянные пробелы в презентациях PowerPoint и проблема с настраиваемым пользовательским интерфейсом в документах Word, из-за которой указанный аргумент считался выходящим за допустимый диапазон.

Дополнительные сведения об этих и других новых возможностях Пакет SDK 2.5 Open XML см. в статье Новые возможности в Open XML SDK 2.5 для Office.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *