Новые возможности в 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.Package
DocumentFormat.OpenXml.Packaging.IPackage
вместо с аналогичнойSystem.IO.Packaging.Package
областью API EnumValue<T>
Теперь используется для создания структуры, а неSystem.Enum
. Это позволяет нам включить поведение на нем, не прибегая к рефлексии- Методы в частях для добавления дочерних частей (т. е. ) теперь реализуются как методы расширения вне нового интерфейса маркера.
AddImagePart
ISupportedRelationship<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