Новые возможности в Open XML SDK

[3.0.0] - 2023-11-15

Добавили

  • Пакеты теперь можно сохранять в .NET Core и .NET 5+ при создании с помощью пути или потока (No 1307).
  • Пакеты теперь могут поддерживать неправильные URI (например, связи с URI, например mailto:person@)
  • Введите средства сравнения на равенство для OpenXmlElement (No 1476).
  • IFeatureCollection Теперь можно перечислить и имеет полезное представление отладки, чтобы узнать, какие функции зарегистрированы (No 1452).
  • Добавление mime-типов для создания частей (No 1488).
  • Пространство имен DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main
  • Пространство имен DocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main
  • Пространство имен DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021

Изменение

  • Когда проверка находит неверную часть, теперь она будет включать тип связи, а не имя класса.
  • IDisposableFeature теперь является частью пакета платформы и доступен по умолчанию в пакете или части.

Критические изменения

  • Платформа .NET Standard 1.3 больше не поддерживается. .NET Standard 2.0 является самым низким поддерживаемым .NET Standard.
  • Базовая инфраструктура теперь содержится в новом пакете DocumentFormat.OpenXml.Framework. Типизированные классы по-прежнему находятся в DocumentFormat.OpenXml. Это означает, что вы можете ссылаться на DocumentFormat.OpenXml и по-прежнему компилировать те же типы, но если требуется пакет меньшего размера, вы можете полагаться только на пакет платформы.
  • Изменен тип на OpenXmlPackage.PackageDocumentFormat.OpenXml.Packaging.IPackage вместо с аналогичной System.IO.Packaging.Package областью API
  • EnumValue<T> Теперь используется для создания структуры, а не System.Enum. Это позволяет нам включить поведение на нем, не прибегая к рефлексии
  • Методы в частях для добавления дочерних частей (т. е. ) теперь реализуются как методы расширения вне нового интерфейса маркера. AddImagePartISupportedRelationship<T>
  • Перечисления сведений о типах частей (т. е. ImagePartType) больше не являются перечислением, а статическим классом для предоставления хорошо известных типов частей в виде структур. Теперь любой метод для определения новой пары типа контента или расширения можно вызвать с помощью новой PartTypeInfo структуры, которая будет содержать необходимые сведения.
  • OpenXmlPackage.CanSave теперь является свойством экземпляра (No 1307).
  • Удалены OpenXmlSettings.RelationshipErrorHandlerFactory и связанные типы и заменены встроенным механизмом для включения этой функции.
  • IdPartPair теперь является структурой только для чтения, а не классом
  • Переименовано PartExtensionProvider в IPartExtensionFeature и уменьшено его поверхностная область только до двух методов (вместо полного Dictionary<,>). Свойство для доступа к этому параметру OpenXmlPackage удалено, но при необходимости может быть предоставлено Features.Get<IPartExtensionFeature>() доступ через .
  • OpenXmlPart/OpenXmlContainer/OpenXmlPackage и производные типы теперь имеют внутренние конструкторы (они имели внутренние абстрактные методы, поэтому, скорее всего, не были подклассами извне).
  • OpenXmlElementList теперь является структурой, реализующей IEnumerable<OpenXmlElement> и IReadOnlyList<OpenXmlElement> при наличии (No 1429).
  • Теперь доступны отдельные реализации OpenXmlPartReader для каждого типа пакета (т. е. WordprocessingDocumentPartReader, SpreadsheetDocumentPartReader, PresentationDocumentPartReader), а предыдущая TypedOpenXmlPartReader версия удалена. (#1403)
  • Сокращены ненужные целевые платформы для пакетов, кроме DocumentFormat.OpenXml.Framework (No 1471).
  • Изменены некоторые проблемы с написанием для имен свойств (No 1463, No 1444).
  • Model3D теперь представляет имя am3d.model3d тега измененного xml-элемента (ранее am3d.model3D)
  • Удалены DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo
  • Удалены DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid
  • Удалено неиспользуемое SchemaAttrAttribute (No 1316)
  • Удалено неиспользуемое ChildElementInfoAttribute (No 1316)
  • Удалено OpenXmlSimpleType.TextValue. Это свойство никогда не предназначалось для внешнего использования (No 1316).
  • Удалена устаревшая логика проверки из версии 1 пакета SDK (No 1316).
  • Удалены устаревшие методы из версии 2.x (No 1316).
  • Удалены изменяемые свойства в OpenXmlAttribute и помечены как readonly (No 1282).
  • Удалено OpenXmlPackage.Close в пользу Dispose (No 1373).
  • Удалено OpenXmlPackage.SaveAs в пользу Clone (No 1376).

[2.20.0] - 2023-04-05

Добавили

  • Добавлено пространство имен DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula
  • Добавлена версия DocumentFormat.OpenXml.Office. Word. Y2023. Пространство имен WordML.Word16DU

Изменение

  • Помечен OpenXmlSimpleType.TextValue как устаревший. Это свойство никогда не предназначалось для внешнего использования (No 1284).
  • Помечен OpenXmlPackage.Package как устаревший. Это будет подробное описание реализации в будущих версиях и не будет доступно (No 1306).
  • Помечен OpenXmlPackage.Close как устаревший. Эта функция будет удалена в более позднем выпуске. Вместо этого используйте команду Dispose (No 1371).
  • Помечен OpenXmlPackage.SaveAs как устаревший, так как он будет удален в следующей версии (No 1378).

ИСПРАВЛЕНО

  • Исправлены неправильные расширения файлов vbaProject (No 1292).
  • Исправлены неправильные расширения файлов для ImagePart (No 1305).
  • Исправлен неправильный регистр для customXml (No 1351).
  • Исправлена ошибка AddEmbeddedPackagePart, разрешая правильные расширения для различных типов контента (No 1388).

[2.19.0] - 2022-12-14

Добавили

  • Целевой объект .NET 6 с поддержкой обрезки (No 1243, No 1240).
  • Добавлено пространство имен DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData
  • Добавлено пространство имен DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command
  • Добавлено пространство имен DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command
  • Добавлен дочерний объект RichDataPivotCacheGuid в DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition

ИСПРАВЛЕНО

  • По возможности удалено использование отражения (No 1240).
  • Исправлена проблема, из-за которой некоторые URI могли изменяться при клонировании или создании копии (No 1234).
  • Исправлена проблема в поколении FlatOpc, из-за которой не считывался полный поток в .NET 6 и более поздних версий (No 1232).
  • Исправлена проблема, из-за которой восстановленные связи загружались неправильно (No 1207).

[2.18.0] 2022-09-06

Добавили

  • Добавлено пространство имен DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 (No 1196).
  • Добавлен атрибут durableId в DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (No 1196).
  • Добавлено несколько базовых классов для типизированных элементов, частей и пакетов (No 1185).

Изменение

  • Скорректированные LICENSE.md в соответствии с требованиями .NET Foundation (No 1194).
  • Прочие изменения для улучшения производительности внутренних служб

[2.17.1] - 2022-06-28

Удаленные элементы

  • Удалено предварительное пространство имен DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions, так как это пространство имен в настоящее время создает недопустимые документы.

ИСПРАВЛЕНО

  • Восстановлено отношение PowerPointCommentPart к PresentationPart.

Deprecated

  • Связь между PowerPointCommentPart и PresentationPart не рекомендуется использовать и будет удалена в следующей версии.

[2.17.0] — не издавалось

Добавили

  • Добавлено пространство имен DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions (No 1151).
  • Добавлено пространство имен DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo (No 1151)

ИСПРАВЛЕНО

  • Перемещено отношение PowerPointCommentPart в SlidePart (No 1137).

Обновлено

  • Удалены общедоступные анализаторы API в пользу EnablePackageValidation (No 1154).

[2.16.0] - 2022-03-14

Добавили

  • Добавлен метод OpenXmlPart.UnloadRootElement , который выгрузит корневой элемент, если он загружен (No 1126).

Обновлено

  • Создание кода схемы было перемещено в проект ПАКЕТА SDK с помощью генераторов кода C#

[2.15.0] - 2021-12-16

Добавили

  • Добавлены примеры строго типизированных классов и Linq-to-XML в ./samples каталоге (No 1101, No 1087).
  • Доставка дополнительных библиотек для некоторых дополнительных функций в DocumentFormat.OpenXml.Features и DocumentFormat.OpenXml.Linq. Дополнительные сведения см. в документации в репозитории.
  • Добавлен метод расширения для поддержки получения типа части образа (No 1082).
  • Добавлены созданные классы и FileFormatVersions.Microsoft365 для новых типов моделей подписки и ограничений (No 1097).

ИСПРАВЛЕНО

  • Исправлена проблема с измененным типом model/gltf.binary mime (No 1069).
  • DocumentFormat.OpenXml.Office.Drawing.ShapeTree теперь доступен только в Office 2010 и более поздних версиях, а не в версии 2007.
  • Правильная сериализация new CellValue(bool) значений (No 1070).
  • Обновлены известные пространства имен, создаваемые с помощью генератора источников в репозитории (No 1092).
  • Некоторые проблемы с документацией, связанные с FileFormatVersions перечислением

[2.14.0] - 2021-10-28

Добавили

  • Добавлены созданные классы для типов и ограничений Office 2021 (No 1030).
  • Добавлено Features свойство для OpenXmlPartContainer и OpenXmlElement для включения хранилища состояний для отдельных частей или отдельных документов.
  • Добавлены открытые конструкторы для XmlPath (No 1013).
  • Добавлены части для расширенных типов данных (No 1002).
  • Добавлены методы для создания уникальных идентификаторов абзаца (No 1000).

[2.13.1] - 2021-08-17

ИСПРАВЛЕНО

  • Исправлены некоторые заметки, допускающие значение NULL, которые были неправильно определены (No 953, No 955).
  • Исправлена проблема, из-за которой TextReader при создании XmlReader при определенных обстоятельствах устранялся объект (No 940).
  • Исправлен тип документации (No 937).
  • Исправлена проблема с добавлением дополнительных дочерних элементов в части данных (No 934).
  • Заменены некоторые записи документации, которые были универсальными значениями, полезными комментариями (No 992).
  • Исправлена регрессия в AddDataPartRelationship (No 954).

[2.13.0] - 2021-05-13

Добавили

  • Дополнительные типы O19 в соответствии с открытыми спецификациями (No 916)
  • Добавлены созданные классы для типов и ограничений Office 2019 (No 882).
  • Добавлены атрибуты допустимости значений NULL (No 840, No 849).
  • Добавлена перегрузка для OpenXmlPartReader и OpenXmlReader.Create(...) для пропуска пробелов (No 857).
  • Добавлены HexBinaryValue.TryGetBytes(...) и HexBinaryValue.Create(byte[]) для управления кодировкой и декодированием байтов (No 867).
  • Реализовано IEquatable<IdPartPair> в , IdPartPair чтобы исправить реализацию на равенство там и устаревшие методы задания (No 871).

ИСПРАВЛЕНО

  • Исправлена сериализация конструкторов CellValue для использования инвариантных языков и региональных параметров (No 903).
  • Исправлен синтаксический анализ для разрешения экспонент для числовых значений ячеек (No 901).
  • Исправлено значительное узкое место производительности при UniqueAttributeValueConstraint задействовании (No 924).

Deprecated

  • Устаревший Office2013. Word. Свойство Person.Contact. Он больше не сохраняется и будет удален в следующей версии (No 912).

[2.12.3] - 2021-02-24

ИСПРАВЛЕНО

  • Исправлена проблема, из-за которой CellValue можно было неправильно проверить логические значения (No 890).

[2.12.2] - 2021-02-16

ИСПРАВЛЕНО

  • Исправлена проблема, из-за которой OpenSettings.RelationshipErrorHandlerFactory создавался недопустимый XML-код, если результирующий URI меньше входных данных (No 883).

[2.12.1] - 2021-01-11

ИСПРАВЛЕНО

  • Исправлена ошибка, из-за OpenXmlCompositeElement которой свойствам экземпляров не удавалось задать значение NULL для удаления элемента (No 850).
  • Исправлено OpenXmlElement.RawOuterXml правильное задание значений NULL без выдачи (No 818).
  • Разрешить перезапись всех неправильно сформированных URI независимо от целевого значения (No 835).

[2.12.0] - 2020-12-09

Добавили

  • Добавлено OpenSettings.RelationshipErrorHandlerFactory для обработки URI, которые нарушают синтаксический анализ документов с неправильно сформированными ссылками (No 793).
  • Добавлено OpenXmlCompositeElement.AddChild(OpenXmlElement) для добавления дочерних элементов в правильном порядке для каждой схемы (No 774).
  • Добавлены SmartTagClean и SmartTagId вместо SmtClean и SmtId (No 747).
  • Добавлены OpenXmlValidator.Validate(..., CancellationToken) переопределения, позволяющие упростить отмену длительной проверки в .NET 4.0 и более поздних версий (No 773).
  • Добавлены перегрузки для CellValue приема decimal, doubleи int, а также удобные методы для их анализа (No 782).
  • Добавлена проверка для CellType чисел и форматов дат (No 782).
  • Добавлено OpenXmlReader.GetLineInfo() для получения IXmlLineInfo базового средства чтения, если оно доступно (No 804).

ИСПРАВЛЕНО

  • Исправлено исключение, которое вызывается при попытке сохранить документ как FlatOPC, если он содержит SVG-файлы (No 822).
  • Добавлены SchemaAttrAttribute атрибуты для обратной совместимости (No 825).

Удаленные элементы

  • Удалена явная ссылка на System.IO.Packaging в сборках .NET 4.6 (No 774).

[2.11.3] - 2020-07-17

ИСПРАВЛЕНО

  • Исправлено значительное узкое место производительности при IndexReferenceConstraint использовании и ReferenceExistConstraint (No 763).
  • Исправлено CellValue включение только трех наиболее знаковых цифр на секундных дробях для исправления дат загрузки проблемы (No 741).
  • Исправлено несколько ошибок индексирования проверки, которые могли привести к ошибочным ошибкам проверки (No 767).
  • Обновлена внутренняя система проверки, чтобы не использовать рекурсию, что позволило улучшить короткое замыкание (No 766).

[2.11.2] - 2020-07-10

ИСПРАВЛЕНО

  • Исправлена неработая исходная ссылка (No 749).
  • Гарантируется, что компиляция является детерминированной (No 749).
  • Удален дополнительный файл в пакете NuGet (No 749).

[2.11.1] - 2020-07-10

ИСПРАВЛЕНО

  • Убедитесь, что сборки платформа .NET Framework передают PEVerify (No 744).
  • OpenXmlPartContainer.DeletePart Больше не создает исключение, если для заданного идентификатора нет совпадения (No 740).
  • Пометка устаревших элементов, чтобы они не отображались в Intellisense (No 745).
  • Исправлена проблема с AttributeRequiredConditionToValue семантическим ограничением, из-за которой проверка могла завершиться ошибкой при правильном вводе (No 746).

[2.11.0] - 2020-05-21

Добавили

  • Добавлено перечисление FileFormatVersions.2019 (No 695).
  • Добавлены ChartSpace элементы и диаграммы для новых пространств имен 2016 года. Это позволяет соединить элементы для создания части диаграммы со стилями диаграммы, такими как "Sunburst" (No 687).
  • Добавлены OpenXmlElementFunctionalExtensions.With(...) методы расширения, которые предоставляют гибкие средства для создания OpenXmlElement экземпляров в контексте чисто функциональных преобразований (No 679).
  • Добавлены минимальные версии Office для типов перечислений и значений (No 707).
  • Добавлены дополнительные CompatSettingNameValues значения: UseWord2013TrackBottomHyphenation, AllowHyphenationAtTrackBottomи AllowTextAfterFloatingTableBreak (No 706).
  • Добавлена функция gfxdata attribue для сложных типов фигур Arc, Curve, Line, PolyLine, Group, Image, Oval, Rect и RoundRect для ms-OI29500 2.1.1783-1799 (No 709).
  • Добавлено OpenXmlPartContainer.TryGetPartById для включения извлечения дочерней части без исключения, если она не существует (No 714).
  • Добавлено OpenXmlPackage.StrictRelationshipFound свойство, указывающее, содержит ли этот пакет переходные связи, преобразованные из Strict (No 716).

ИСПРАВЛЕНО

  • Пользовательские производные части не наследуют известные части от родительского элемента, что приводит к сбою при добавлении частей (No 722).

Изменение

  • Помечены методы задания свойств в OpenXmlAttribute как устаревшие, так как структуры не должны иметь изменяемое состояние (No 698).

[2.10.1] - 2020-02-28

ИСПРАВЛЕНО

  • Атрибуты должны быть доступны при OpenXmlElement инициализации с помощью внешнего XML (No 684, No 692).
  • Некоторые ошибки документации (No 681)
  • Удалено состояние, которое делает непотокобезопасным для проверки элементов при определенных условиях (No 686).
  • Правильно вставляет строго типизированные элементы перед известными элементами, которые не являются строго типизированными (No 690).

[2.10.0] - 2020-01-10

Добавили

  • Добавлена начальная поддержка Office 2016, включая FileFormatVersion.Office2016и ExtendedChartPart другие новые элементы схемы (No 586).
  • Добавлен целевой объект .NET Standard 2.0 (No 587).
  • Поддержка отладки включенных символов (No 650)
  • Предоставляется IXmlNamespaceResolver из XmlPath вместо отформатированного списка строк для предоставления сопоставления пространства имен и префикса (No 536).
  • Реализовано IComparable<T> и IEquatable<T> включено OpenXmlComparableSimpleValue , чтобы разрешить сравнения без бокса (No 550).
  • Добавлено OpenXmlPackage.RootPart для быстрого доступа к корневой части в любом пакете (No 661).

Изменение

  • Обновлено до версии 4.7.0 system.IO.Packaging, которая содержит ряд исправлений perf (No 660).
  • Консолидированные данные для дочерних элементов и свойств для уменьшения дублирования (No 540, No 547, No 548).
  • Заменены непрозрачные двоичные данные для ограничений дочерних элементов декларативной моделью (No 603).
  • Ряд исправлений производительности для минимизации выделения ресурсов, где это возможно
  • Уменьшение размера на 20 % с 5,5 МБ до 4,3 МБ
  • Подсистема проверки была кардинально переработана. Это может привести к изменению сообщаемого сообщения об ошибках.

ИСПРАВЛЕНО

  • Исправлены некоторые несоответствия документации (No 582).
  • Исправлены ToFlatOpcDocument, ToFlatOpcString, FromFlatOpcDocumentи FromFlatOpcString для правильной обработки частей импорта альтернативного формата или "altChunk parts" (No 659).

[2.9.1] - 2019-03-13

Изменение

  • Добавлено обходное решение для проблемы компилятора .NET Native, которая не поддерживает вызов Marshal.SizeOf<T> с помощью структуры, содержащей автоматически реализованные свойства (No 569).
  • Исправлена ошибка документации (No 528).

[2.9.0] - 2018-06-08

Добавили

  • ListValue теперь реализует IEnumerable<T> (No 385).
  • Добавлено WebExtension.Frozen и устаревшее свойство с ошибками Fronzen (No 460).
  • Добавлено OpenXmlPackage.CanSave свойство, указывающее, поддерживает ли платформа сохранение без закрытия пакета (No 468).
  • Простые типы (кроме EnumValue и ListValue) теперь реализуют IComparable<T> и IEquatable<T> (No 487).

Изменение

  • Удалено состояние, которое было перенесено в проверяющие элементы, которые будут удерживать пакеты, когда они не используются (No 390).
  • EnumSimpleType Синтаксический анализ был улучшен и использует меньше выделений и кэшей для использования в будущем (No 408).
  • Исправлен ряд орфографических ошибок в документации (No 462).
  • При вызове OpenXmlPackage.Save платформа .NET Framework пакет теперь сбрасывается в поток (No 468).
  • Исправлено условие гонки при выполнении строгого преобразования атрибутов (No 480).
  • Данные схемы для проверки используют более компактный формат, что приводит к уменьшению размера библиотеки DLL и улучшению производительности при загрузке (No 482, No 483).
  • Ряд API помечаются как устаревшие, так как они имеют простые обходные пути и будут удалены при следующем крупном изменении.
  • Исправлены некоторые значения ограничений для проверки, которые содержали Office 2007, даже если она поддерживалась только в более поздних версиях.
  • Обновлено System.IO.Packaging до версии 4.5.0, которая устраняет некоторые проблемы на платформах Xamarin, а также сводит к минимуму зависимости от платформа .NET Framework

[2.8.1] - 2018-01-03

Изменение

  • Ссылка на исправленный файл лицензии пакета для отображения обновленной лицензии MIT

[2.8.0] - 2017-12-28

Добавили

  • Директива среды выполнения по умолчанию для лучшей поддержки .NET Native.

Изменение

  • Исправлено сохранение части, кодируемой с помощью UTF8, но без метки порядка байтов. Из-за этого некоторые отрисовщики не смогли открыть созданный документ.
  • Исправлены исключения, возникающие при обнаружении ошибок при открытии пакетов для согласованности на разных платформах.
  • Исправлена проблема на платформах Mono, использующих пакет NuGet System.IO.Packaging (Xamarin и т. д.) при создании документа.
  • Исправлено сохранение пакета вручную, если автосохранение имеет значение false.
  • Исправлены данные ограничения схемы и стандартизированная сериализация на разных платформах.
  • Обновлено до System.IO.Packaging версии 4.4.0, которая устраняет некоторую согласованность с платформа .NET Framework в открывающихся пакетах.

[2.7.2] - 2017-06-06

Добавили

  • Пакет теперь поддерживает .NET 3.5 и .NET 4.0 в дополнение к .NET Standard 1.3 и платформа .NET Framework 4.6

Изменение

  • Исправлена проблема, из-за которой версия сборки не была задана в сборке.

[2.7.1] - 2017-01-31

Изменение

  • Исправлен сбой при вызове проверки в платформа .NET Framework с применением строгого именования.

[2.7.0] - 2017-01-24

Добавили

  • Пакет SDK теперь поддерживает .NET Standard 1.3

Изменение

  • Перемещено на использование System.IO.Packaging из dotnet/corefx для .NET Standard 1.3 и WindowsBase для .NET 4.5.
  • Очищена система сборки проекта для использования интерфейса командной строки .NET.

[2.6.1] - 2016-01-15

Добавили

  • Добавлены сотни тестов XUnit. В настоящее время в общей сложности 1333 теста. Они занимают около 20 минут, чтобы запустить, так что будьте терпеливы.

[2.6.0] - 2015-06-29

Добавили

  • Добавлена замена System.IO.Packaging , которая исправляет некоторые серьезные (но исключительные) ошибки, обнаруженные в реализации WindowsBase