Novedades del SDK de Open XML
[3.0.0] - 2023-11-15
Añadido
- Los paquetes ahora se pueden guardar en .NET Core y .NET 5+ si se construyen con una ruta de acceso o una secuencia (1307).
- Los paquetes ahora pueden admitir URI con formato incorrecto (como relaciones con un URI como
mailto:person@
) - Introducir comparadores de igualdad para
OpenXmlElement
(1476) IFeatureCollection
ahora se puede enumerar y tiene una vista de depuración útil para ver qué características están registradas (1452)- Agregar tipos mime a la creación de piezas (1488)
- Espacio de nombres
DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main
- Espacio de nombres
DocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main
- Espacio de nombres
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021
Modificado
- Cuando la validación encuentra una parte incorrecta, ahora incluirá el tipo de relación en lugar de un nombre de clase.
IDisposableFeature
ahora forma parte del paquete de marco y está disponible de forma predeterminada en un paquete o parte.
Cambios importantes
- .NET Standard 1.3 ya no es una plataforma compatible. .NET Standard 2.0 es el nivel más bajo compatible con .NET Standard.
- La infraestructura principal ahora está contenida en un nuevo paquete DocumentFormat.OpenXml.Framework. Las clases con tipo siguen en DocumentFormat.OpenXml. Esto significa que puede hacer referencia a DocumentFormat.OpenXml y seguir compilando los mismos tipos, pero si desea un paquete más pequeño, puede confiar solo en el paquete de marco.
- Se ha cambiado el tipo de
OpenXmlPackage.Package
aDocumentFormat.OpenXml.Packaging.IPackage
en lugar de con una superficie deSystem.IO.Packaging.Package
API similar EnumValue<T>
ahora se usa para boxear una estructura en lugar de .System.Enum
Esto nos permite habilitar el comportamiento en él sin recurrir a la reflexión- Los métodos de los elementos para agregar elementos secundarios (es decir,
AddImagePart
) ahora se implementan como métodos de extensión a partir de una nueva interfaz de marcadorISupportedRelationship<T>
- Las enumeraciones de información de tipo de pieza (es decir,
ImagePartType
) ya no son una enumeración, sino una clase estática para exponer tipos de elementos conocidos como estructuras. Ahora se puede llamar a cualquier método para definir un nuevo par content-type/extension con la nuevaPartTypeInfo
estructura que contendrá la información necesaria. OpenXmlPackage.CanSave
es ahora una propiedad de instancia (1307)- Tipos quitados
OpenXmlSettings.RelationshipErrorHandlerFactory
y asociados y reemplazados por un mecanismo integrado para habilitar esta IdPartPair
es ahora una estructura de solo lectura en lugar de una clase- Se ha cambiado el
PartExtensionProvider
nombre aIPartExtensionFeature
y ha reducido su área expuesta a solo dos métodos (en lugar de a un completoDictionary<,>
). Se ha quitado laOpenXmlPackage
propiedad para tener acceso a esta opción, pero se puede acceder a ella a travésFeatures.Get<IPartExtensionFeature>()
de si es necesario. OpenXmlPart
/OpenXmlContainer
/OpenXmlPackage
y los tipos derivados ahora tienen constructores internos (estos tenían métodos abstractos internos, por lo que lo más probable es que no se subclases externamente)OpenXmlElementList
es ahora una estructura que implementaIEnumerable<OpenXmlElement>
yIReadOnlyList<OpenXmlElement>
donde está disponible (1429)- Las implementaciones individuales de
OpenXmlPartReader
están disponibles ahora para cada tipo de paquete (es decirWordprocessingDocumentPartReader
, ,SpreadsheetDocumentPartReader
,PresentationDocumentPartReader
), y se ha quitado el anteriorTypedOpenXmlPartReader
. (#1403) - Marcos de destino innecesarios reducidos para paquetes además de DocumentFormat.OpenXml.Framework (1471)
- Se han cambiado algunos problemas ortográficos para los nombres de propiedad (1463, 1444)
Model3D
ahora representa el nombream3d.model3d
de etiqueta de elemento xml modificado (anteriormenteam3d.model3D
)- Quitado
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo
- Quitado
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid
- Quitado sin usar
SchemaAttrAttribute
(1316) - Quitado sin usar
ChildElementInfoAttribute
(1316) - Se quitó
OpenXmlSimpleType.TextValue
. Esta propiedad nunca estaba pensada para usarse externamente (1316) - Se ha quitado la lógica de validación obsoleta de la versión 1 del SDK (1316)
- Se han quitado los métodos obsoletos de 2.x (1316)
- Se quitaron las propiedades mutables en OpenXmlAttribute y se marcaron como
readonly
(1282) - Se ha quitado
OpenXmlPackage.Close
a favor deDispose
(1373) - Se ha quitado
OpenXmlPackage.SaveAs
a favor deClone
(1376)
[2.20.0] - 2023-04-05
Añadido
- Se agregó el espacio de nombres DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula.
- Se ha agregado DocumentFormat.OpenXml.Office. Word. Y2023. Espacio de nombres WordML.Word16DU
Modificado
- Marcado
OpenXmlSimpleType.TextValue
como obsoleto. Esta propiedad nunca estaba pensada para usarse externamente (1284) - Marcado
OpenXmlPackage.Package
como obsoleto. Esto será un detalle de implementación en versiones futuras y no será accesible (1306) - Marcado
OpenXmlPackage.Close
como obsoleto. Esto se quitará en una versión posterior, use Dispose en su lugar (1371) - Marcado
OpenXmlPackage.SaveAs
como obsoleto, ya que se quitará en una versión futura (1378)
Decimal
- Se han corregido extensiones de archivo incorrectas para archivos vbaProject (1292)
- Se han corregido extensiones de archivo incorrectas para ImagePart (1305)
- Mayúsculas y minúsculas incorrectas corregidas para customXml (1351)
- Se ha corregido AddEmbeddedPackagePart para permitir extensiones correctas para varios tipos de contenido (1388)
[2.19.0] - 2022-12-14
Añadido
- Destino de .NET 6 compatible con el recorte (1243, 1240)
- Se ha agregado el espacio de nombres DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.
- Se agregó el espacio de nombres DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command.
- Se agregó el espacio de nombres DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command.
- Se ha agregado RichDataPivotCacheGuid secundario a DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition
Decimal
- Se ha quitado el uso de reflexión siempre que sea posible (1240)
- Se ha corregido un problema por el que se podían cambiar algunos URI al clonar o crear una copia (1234)
- Se ha corregido un problema en la generación de FlatOpc que no podía leer la secuencia completa en .NET 6+ (1232)
- Se ha corregido un problema por el que las relaciones restauradas no se cargan correctamente (1207)
[2.18.0] 2022-09-06
Añadido
- Se agregó el espacio de nombres DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 (#1196)
- Se ha agregado el atributo durableId a DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (1196)
- Se han agregado algunas clases base para elementos, elementos y paquetes con tipo (1185)
Modificado
- LICENSE.md ajustado para cumplir los requisitos de .NET Foundation (1194)
- Cambios varios para mejorar el rendimiento de los servicios internos
[2.17.1] - 2022-06-28
Eliminación
- Se quitó el espacio de nombres de vista previa DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions porque este espacio de nombres creará actualmente documentos no válidos.
Decimal
- Restauró la relación PowerPointCommentPart con PresentationPart.
En desuso
- La relación entre PowerPointCommentPart y PresentationPart está en desuso y se quitará en una versión futura.
[2.17.0] - No publicado
Añadido
- Se agregó el espacio de nombres DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions (#1151)
- Se agregó el espacio de nombres DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo (#1151)
Decimal
- Relación de PowerPointCommentPart movida a SlidePart (1137)
Actualizado
- Se han quitado analizadores de API públicos en favor de EnablePackageValidation (1154)
[2.16.0] - 2022-03-14
Añadido
OpenXmlPart.UnloadRootElement
Método agregado que descargará el elemento raíz si se carga (1126)
Actualizado
- La generación de código de esquema se ha movido al proyecto del SDK mediante generadores de código de C#.
[2.15.0] - 2021-12-16
Añadido
- Se han agregado ejemplos para clases fuertemente tipadas y Linq-to-XML en el
./samples
directorio (1101, 1087) - Envío de bibliotecas adicionales para algunas funciones adicionales en
DocumentFormat.OpenXml.Features
yDocumentFormat.OpenXml.Linq
. Consulte la documentación del repositorio para obtener más detalles. - Se ha agregado el método de extensión para admitir la obtención del tipo de elemento de imagen (1082)
- Se han agregado clases generadas y
FileFormatVersions.Microsoft365
para nuevos tipos y restricciones del modelo de suscripción (1097).
Decimal
- Se ha corregido un problema para el tipo
model/gltf.binary
mime modificado (1069) - DocumentFormat.OpenXml.Office.Drawing.ShapeTree ahora solo está disponible en Office 2010 y versiones posteriores, no en 2007.
- Serializar
new CellValue(bool)
correctamente los valores (1070) - Se han actualizado los espacios de nombres conocidos que se van a generar a través de un generador de origen en el repositorio (1092)
- Algunos problemas de documentación relacionados con
FileFormatVersions
la enumeración
[2.14.0] - 2021-10-28
Añadido
- Se han agregado clases generadas para Office 2021 tipos y restricciones (1030)
- Se agregó
Features
la propiedad aOpenXmlPartContainer
yOpenXmlElement
para habilitar un almacenamiento de estado por pieza o por documento. - Se han agregado constructores públicos para
XmlPath
(1013) - Elementos agregados para tipos de datos enriquecidos (1002)
- Se han agregado métodos para generar identificadores de párrafo únicos (1000)
[2.13.1] - 2021-08-17
Decimal
- Se han corregido algunas anotaciones de nulabilidad que se definieron incorrectamente (953, 955)
- Se ha corregido un problema que eliminaba al
TextReader
crear unXmlReader
objeto en determinadas circunstancias (940) - Se ha corregido un tipo de documentación (937)
- Se ha corregido un problema al agregar elementos secundarios adicionales a elementos de datos (934)
- Se han reemplazado algunas entradas de documentación que eran valores genéricos por comentarios útiles (992)
- Se ha corregido una regresión en AddDataPartRelationship (954)
[2.13.0] - 2021-05-13
Añadido
- Tipos de O19 adicionales para que coincidan con las especificaciones abiertas (916)
- Se han agregado clases generadas para tipos y restricciones de Office 2019 (882)
- Atributos de nulabilidad agregados (840, 849)
- Se ha agregado una sobrecarga para
OpenXmlPartReader
yOpenXmlReader.Create(...)
para omitir el espacio en blanco (857) - Se ha agregado
HexBinaryValue.TryGetBytes(...)
yHexBinaryValue.Create(byte[])
para administrar la codificación y descodificación de bytes (867) - Implementado
IEquatable<IdPartPair>
paraIdPartPair
corregir la implementación de igualdad allí y establecedores obsoletos (871)
Decimal
- Se ha corregido la serialización de
CellValue
constructores para usar referencias culturales invariables (903) - Análisis corregido para permitir exponentes de valores numéricos de celda (901)
- Se ha corregido un cuello de botella de rendimiento masivo cuando
UniqueAttributeValueConstraint
se trata de (924)
En desuso
- Office2013 en desuso. Word. Propiedad Person.Contact. Ya no se conserva y se quitará en una versión futura (912)
[2.12.3] - 2021-02-24
Decimal
- Se ha corregido un problema por
CellValue
el que se puede validar incorrectamente para los valores booleanos (890)
[2.12.2] - 2021-02-16
Decimal
- Se ha corregido un problema por
OpenSettings.RelationshipErrorHandlerFactory
el que se crea un XML no válido si el URI resultante es menor que la entrada (883)
[2.12.1] - 2021-01-11
Decimal
- Se ha corregido un error por el que las propiedades de las instancias no se podían establecer en
OpenXmlCompositeElement
null para quitar el elemento (850) - Se ha corregido
OpenXmlElement.RawOuterXml
para establecer correctamente valores NULL sin generar (818) - Permitir la reescritura de todos los URI con formato incorrecto independientemente del valor de destino (835)
[2.12.0] - 2020-12-09
Añadido
- Se ha agregado
OpenSettings.RelationshipErrorHandlerFactory
para proporcionar una manera de controlar los URI que interrumpen el análisis de documentos con vínculos con formato incorrecto (793) - Se ha agregado
OpenXmlCompositeElement.AddChild(OpenXmlElement)
para agregar elementos secundarios en el orden correcto por esquema (774) - Agregado
SmartTagClean
ySmartTagId
en lugar deSmtClean
ySmtId
(747) - Se han agregado
OpenXmlValidator.Validate(..., CancellationToken)
invalidaciones para permitir una cancelación más sencilla de la validación de larga duración en .NET 4.0+ (773) - Se han agregado sobrecargas para
CellValue
tomardecimal
,double
y , asíint
como métodos prácticos para analizarlas (782) - Se ha agregado validación para
CellType
números y formatos de fecha (782) - Se ha agregado
OpenXmlReader.GetLineInfo()
para recuperarIXmlLineInfo
el lector subyacente si está disponible (804)
Decimal
- Se ha corregido la excepción que se produciría si se intentaba guardar un documento como FlatOPC si contiene archivos SVG (822)
- Se han agregado
SchemaAttrAttribute
atributos de nuevo para la compatibilidad con versiones anteriores (825)
Eliminación
- Se ha quitado la referencia explícita a
System.IO.Packaging
en compilaciones de .NET 4.6 (774)
[2.11.3] - 2020-07-17
Decimal
- Se ha corregido un cuello de botella de rendimiento masivo cuando
IndexReferenceConstraint
yReferenceExistConstraint
están implicados (763) - Se ha corregido
CellValue
para incluir solo tres dígitos más firmantes en las segundas fracciones para corregir las fechas de carga de problemas (741) - Se ha corregido un par de errores de indexación de validación que podían provocar errores de validación erróneos (767)
- Se ha actualizado el sistema de validación interno para que no use la recursividad, lo que permite un mejor cortocircuito (766)
[2.11.2] - 2020-07-10
Decimal
- Se ha corregido el vínculo de origen roto (749)
- Asegurarse de que la compilación es determinista (749)
- Se quitó el archivo adicional en el paquete NuGet (749)
[2.11.1] - 2020-07-10
Decimal
- Asegúrese de que las compilaciones de .NET Framework pasan PEVerify (744)
OpenXmlPartContainer.DeletePart
ya no produce una excepción si no hay una coincidencia para el identificador especificado (740)- Marcar miembros obsoletos para que no aparezcan con Intellisense (745)
- Se ha corregido un problema con
AttributeRequiredConditionToValue
la restricción semántica por el que la validación podía producir un error en la entrada correcta (746)
[2.11.0] - 2020-05-21
Añadido
- Enumeración agregada
FileFormatVersions.2019
(695) - Se han agregado
ChartSpace
elementos de gráfico y para los nuevos espacios de nombres de 2016. Esto permite que las piezas de conexión compilen una parte del gráfico con estilos de gráfico como "Sunburst" (687). - Se han agregado
OpenXmlElementFunctionalExtensions.With(...)
métodos de extensión, que ofrecen medios flexibles para construirOpenXmlElement
instancias en el contexto de transformaciones funcionales puras (679) - Se han agregado versiones mínimas de Office para los tipos y valores de enumeración (707)
- Se han agregado valores adicionales
CompatSettingNameValues
:UseWord2013TrackBottomHyphenation
,AllowHyphenationAtTrackBottom
yAllowTextAfterFloatingTableBreak
(706) - Se han agregado tipos complejos de formas gfxdata attribue a Arc, Curve, Line, PolyLine, Group, Image, Oval, Rect y RoundRect por MS-OI29500 2.1.1783-1799 (709)
- Se ha agregado
OpenXmlPartContainer.TryGetPartById
para habilitar la recuperación de elementos secundarios sin excepción si no existe (714) - Propiedad agregada
OpenXmlPackage.StrictRelationshipFound
que indica si este paquete contiene relaciones de transición convertidas de Strict (716)
Decimal
- Los elementos derivados personalizados no heredaron elementos conocidos de su elemento primario, lo que produjo un error al agregar elementos (722)
Modificado
- Marcados los establecedores de propiedad en
OpenXmlAttribute
como obsoletos, ya que los structs no deben tener el estado mutable (698)
[2.10.1] - 2020-02-28
Decimal
- Los atributos garantizados están disponibles cuando
OpenXmlElement
se inicializa con XML externo (684, 692) - Algunos errores de documentación (681)
- Estado quitado que hacía que no fuera seguro para subprocesos validar elementos en determinadas condiciones (686)
- Inserta correctamente elementos fuertemente tipados antes de los elementos conocidos que no están fuertemente tipados (690)
[2.10.0] - 2020-01-10
Añadido
- Se agregó compatibilidad inicial con Office 2016, incluidos
FileFormatVersion.Office2016
,ExtendedChartPart
y otros nuevos elementos de esquema (586) - Se ha agregado el destino de .NET Standard 2.0 (587)
- Compatibilidad con símbolos incluidos para la depuración (650)
- Expuesto
IXmlNamespaceResolver
desdeXmlPath
en lugar de una lista con formato de cadenas para exponer la asignación de espacios de nombres o prefijos (536) - Implementado
IComparable<T>
yIEquatable<T>
activadoOpenXmlComparableSimpleValue
para permitir comparaciones sin boxing (550) - Se ha agregado
OpenXmlPackage.RootPart
para acceder fácilmente al elemento raíz en cualquier paquete (661)
Modificado
- Se ha actualizado a la versión 4.7.0 de System.IO.Packaging, que incorpora una serie de correcciones de rendimiento (660)
- Datos consolidados para elementos secundarios o propiedades para reducir la duplicación (#540, #547, #548)
- Se han reemplazado datos binarios opacos para restricciones de elementos secundarios por modelo declarativo (603)
- Varias correcciones de rendimiento para minimizar las asignaciones siempre que sea posible
- Reducción del tamaño del 20 % de 5,5 mb a 4,3 mb
- El subsistema de validación ha pasado por un rediseño drástico. Esto puede provocar cambios en los errores que se notifican.
Decimal
- Se han corregido algunas incoherencias de documentación (582)
- Se corrigió
ToFlatOpcDocument
,ToFlatOpcString
,FromFlatOpcDocument
yFromFlatOpcString
para procesar correctamente elementos de importación de formato alternativo o "elementos altChunk" (659)
[2.9.1] - 2019-03-13
Modificado
- Se ha agregado una solución alternativa para un problema del compilador de .NET Native que no admite la llamada
Marshal.SizeOf<T>
con una estructura que contiene propiedades implementadas automáticamente (569) - Se ha corregido un error de documentación (528)
[2.9.0] - 2018-06-08
Añadido
ListValue
ahora implementaIEnumerable<T>
(385)- Se agregó una
WebExtension.Frozen
propiedad mal escritaFronzen
y obsoleta (460) - Se ha agregado una
OpenXmlPackage.CanSave
propiedad que indica si una plataforma admite el guardado sin cerrar el paquete (468) - Los tipos simples (excepto
EnumValue
yListValue
) ahora implementanIComparable<T>
yIEquatable<T>
(487)
Modificado
- Se quitó el estado que se llevaba en validadores que se almacenarían en paquetes cuando no se usaban (390)
EnumSimpleType
Se ha mejorado el análisis y se usan menos asignaciones y cachés para su uso futuro (408)- Se corrigió una serie de errores ortográficos en la documentación (462)
- Al llamar a
OpenXmlPackage.Save
en .NET Framework, el paquete ahora se vacía en la secuencia (468) - Condición de carrera fija al realizar una traducción estricta de atributos (480)
- Los datos de esquema para la validación usan un formato más compacto que conduce a una reducción del tamaño de dll y mejoras de rendimiento para la carga (482, 483)
- Varias API están marcadas como obsoletas, ya que tienen soluciones alternativas sencillas y se quitarán en el siguiente cambio importante.
- Se han corregido algunos valores de restricción para la validación que contenían Office 2007, incluso cuando solo se admitía en versiones posteriores.
- Se ha actualizado
System.IO.Packaging
a la versión 4.5.0, que corrige algunos problemas en las plataformas xamarin, así como minimiza las dependencias de .NET Framework.
[2.8.1] - 2018-01-03
Modificado
- Referencia del archivo de licencia de paquete corregido para mostrar la licencia MIT actualizada
[2.8.0] - 2017-12-28
Añadido
- Directiva en tiempo de ejecución predeterminada para mejorar la compatibilidad con .NET Native.
Modificado
- Se ha corregido el guardado de piezas para codificarse con UTF8, pero sin marca de orden de bytes. Esto hizo que algunos representadores no pudieran abrir el documento generado.
- Se han corregido las excepciones que se producen cuando se producen errores al abrir paquetes para que sean coherentes entre plataformas.
- Se ha corregido un problema en plataformas Mono que usaba el paquete NuGet System.IO.Packaging (Xamarin, etc.) al crear un documento.
- Se ha corregido el guardado manual de un paquete cuando el guardado automático es false.
- Se han corregido los datos de restricción de esquema y la serialización estandarizada entre plataformas.
- Se ha actualizado a la
System.IO.Packaging
versión 4.4.0, que corrige cierta coherencia con .NET Framework al abrir paquetes.
[2.7.2] - 2017-06-06
Añadido
- El paquete ahora admite .NET 3.5 y .NET 4.0, además de .NET Standard 1.3 y .NET Framework 4.6
Modificado
- Se ha corregido un problema por el que la versión del ensamblado no estaba establecida en el ensamblado.
[2.7.1] - 2017-01-31
Modificado
- Se ha corregido un bloqueo al invocar la validación en .NET Framework con la aplicación de nomenclatura segura.
[2.7.0] - 2017-01-24
Añadido
- Sdk ahora admite .NET Standard 1.3
Modificado
- Se ha movido al uso de System.IO.Packaging desde dotnet/corefx para .NET Standard 1.3 y WindowsBase para .NET 4.5.
- Se ha limpiado el sistema de compilación de proyectos para usar la CLI de .NET.
[2.6.1] - 2016-01-15
Añadido
- Se han agregado cientos de pruebas XUnit. Ahora hay un total de 1333 pruebas. Tardan unos 20 minutos en ejecutarse, así que tenga paciencia.
[2.6.0] - 2015-06-29
Añadido
- Incorporación de un reemplazo
System.IO.Packaging
que corrige algunos errores graves (pero excepcionales) encontrados en la implementación de WindowsBase