Novidades no SDK do Open XML
- Os pacotes agora podem ser salvos no .NET Core e no .NET 5+ se construídos com um caminho ou fluxo (#1307).
- Os pacotes agora podem dar suporte a URIs malformadas (como relações com um URI como
mailto:person@
) - Introduzir comparadores de igualdade para
OpenXmlElement
(#1476) IFeatureCollection
agora pode ser enumerado e tem uma exibição de depuração útil para ver quais recursos estão registrados (#1452)- Adicionar tipos de mímica à criação de parte (#1488)
DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main
namespaceDocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main
namespaceDocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021
namespace
- Quando a validação encontrar uma parte incorreta, ela agora incluirá o tipo de relação em vez de um nome de classe
IDisposableFeature
agora faz parte do pacote de estrutura e está disponível por padrão em um pacote ou parte.
- O .NET Standard 1.3 não é mais uma plataforma com suporte. O .NET Standard 2.0 é o menor suporte ao .NET Standard.
- A infraestrutura principal agora está contida em um novo pacote DocumentFormat.OpenXml.Framework. As classes digitada ainda estão em DocumentFormat.OpenXml. Isso significa que você pode fazer referência a DocumentFormat.OpenXml e ainda compilar os mesmos tipos, mas se quiser um pacote menor, poderá contar apenas com o pacote framework.
- Tipo alterado de
OpenXmlPackage.Package
paraDocumentFormat.OpenXml.Packaging.IPackage
em vez de com uma superfície deSystem.IO.Packaging.Package
API semelhante EnumValue<T>
agora é usado para encaixotar um struct em vez de umSystem.Enum
. Isso nos permite habilitar o comportamento nele sem recorrer à reflexão- Os métodos em partes para adicionar partes filho (ou seja)
AddImagePart
agora são implementados como métodos de extensão fora de uma nova interface de marcadorISupportedRelationship<T>
- Enumerações de informações de tipo de parte (ou seja
ImagePartType
) não são mais um enumeração, mas uma classe estática para expor tipos de parte bem conhecidos como structs. Agora, qualquer método para definir um novo par de tipo de conteúdo/extensão pode ser chamado com o novoPartTypeInfo
struct que conterá as informações necessárias. OpenXmlPackage.CanSave
agora é uma propriedade de instância (#1307)- Tipos removidos
OpenXmlSettings.RelationshipErrorHandlerFactory
e associados e substituídos por um mecanismo interno para habilitar isso IdPartPair
agora é um struct readonly em vez de uma classe- Renomeada
PartExtensionProvider
paraIPartExtensionFeature
e reduziu sua área de superfície para apenas dois métodos (em vez de um completoDictionary<,>
). A propriedade para acessar essa desativaçãoOpenXmlPackage
foi removida, mas pode ser acessada por meioFeatures.Get<IPartExtensionFeature>()
, se necessário. OpenXmlPart
/OpenXmlContainer
/OpenXmlPackage
e os tipos derivados agora têm construtores internos (estes tinham métodos abstratos internos, portanto, provavelmente não foram subclasse externamente)OpenXmlElementList
agora é um struct que implementaIEnumerable<OpenXmlElement>
eIReadOnlyList<OpenXmlElement>
onde está disponível (#1429)- Implementações individuais de
OpenXmlPartReader
estão disponíveis agora para cada tipo de pacote (ou sejaWordprocessingDocumentPartReader
, ,SpreadsheetDocumentPartReader
,PresentationDocumentPartReader
), e o anteriorTypedOpenXmlPartReader
foi removido. (#1403) - Estruturas de destino desnecessárias reduzidas para pacotes além de DocumentFormat.OpenXml.Framework (#1471)
- Alterou alguns problemas ortográficos para nomes de propriedades (#1463, #1444)
Model3D
agora representa o nomeam3d.model3d
da marca de elemento xml modificado (anteriormenteam3d.model3D
)- Removido
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo
- Removido
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid
- Removido não utilizado
SchemaAttrAttribute
(#1316) - Removido não utilizado
ChildElementInfoAttribute
(#1316) - Removido
OpenXmlSimpleType.TextValue
. Essa propriedade nunca foi feita para ser usada externamente (#1316) - Lógica de validação obsoleta removida da v1 do SDK (#1316)
- Métodos obsoletos removidos de 2.x (#1316)
- Propriedades mutáveis removidas no OpenXmlAttribute e marcadas como
readonly
(#1282) - Removido
OpenXmlPackage.Close
em favor deDispose
(#1373) - Removido
OpenXmlPackage.SaveAs
em favor deClone
(#1376)
- Adicionado DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula namespace
- Adicionado DocumentFormat.OpenXml.Office. Word. Y2023. Namespace WordML.Word16DU
- Marcado
OpenXmlSimpleType.TextValue
como obsoleto. Essa propriedade nunca foi feita para ser usada externamente (#1284) - Marcado
OpenXmlPackage.Package
como obsoleto. Este será um detalhe de implementação em versões futuras e não estará acessível (#1306) - Marcado
OpenXmlPackage.Close
como obsoleto. Isso será removido em uma versão posterior, use Dispose em vez disso (#1371) - Marcado
OpenXmlPackage.SaveAs
como obsoleto como será removido em uma versão futura (#1378)
- Correção de extensões de arquivo incorretas para arquivos vbaProject (#1292)
- Extensões de arquivo incorretas fixas para ImagePart (#1305)
- Invólucro incorreto corrigido para customXml (#1351)
- Correção de AddEmbeddedPackagePart para permitir extensões corretas para vários tipos de conteúdo (#1388)
- Destino do .NET 6 com suporte para corte (#1243, #1240)
- Adicionado DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData namespace
- Adicionado DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command namespace
- Adicionado DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command namespace
- Added Child RichDataPivotCacheGuid to DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition
- Uso de reflexão removido sempre que possível (#1240)
- Corrigido o problema em que algumas URIs podem ser alteradas ao clonar ou criar cópia (nº 1234)
- Corrigido o problema na geração FlatOpc que não leria o fluxo completo no .NET 6+ (#1232)
- Problema corrigido em que as relações restauradas não carregariam corretamente (#1207)
- Adicionado DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 namespace (#1196)
- Adicionado atributo durableId a DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (#1196)
- Adicionaram poucas classes base para elementos, partes e pacotes digitados (nº 1185)
- O LICENSE.md ajustado para estar em conformidade com os requisitos do .NET Foundation (#1194)
- Alterações diversas para melhor perf para serviços internos
- Removeu o namespace de visualização DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions porque esse namespace criará documentos inválidos no momento.
- Restaurou a relação do PowerPointCommentPart com o PresentationPart.
- A relação entre o PowerPointCommentPart e o PresentationPart é preterida e será removida em uma versão futura.
- Adicionado DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions namespace (#1151)
- Adicionado DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo namespace (#1151)
- Relação movida do PowerPointCommentPart para SlidePart (#1137)
- Analisadores de API pública removidos em favor de EnablePackageValidation (#1154)
- Método adicionado
OpenXmlPart.UnloadRootElement
que descarregará o elemento raiz se ele for carregado (#1126)
- A geração de código de esquema foi movida para o projeto SDK usando geradores de código C#
- Exemplos adicionados para classes fortemente tipadas e Linq-to-XML no
./samples
diretório (#1101, #1087) - Envio de bibliotecas adicionais para algumas funcionalidades adicionais no
DocumentFormat.OpenXml.Features
eDocumentFormat.OpenXml.Linq
. Consulte a documentação em repositório para obter mais detalhes. - Método de extensão adicionado para dar suporte à obtenção do tipo de parte da imagem (#1082)
- Adicionado classes geradas e
FileFormatVersions.Microsoft365
para novos tipos de modelo de assinatura e restrições (#1097).
- Problema corrigido para o tipo
model/gltf.binary
de mímica alterado (#1069) - DocumentFormat.OpenXml.Office.Drawing.ShapeTree agora está disponível apenas no Office 2010 e acima, não em 2007.
- Serializar
new CellValue(bool)
corretamente valores (#1070) - Namespaces conhecidos atualizados a serem gerados por meio de um gerador de origem no repositório (#1092)
- Alguns problemas de documentação em torno do
FileFormatVersions
enum
- Adição de classes geradas para tipos e restrições de Office 2021 (nº 1030)
- Propriedade adicionada
Features
aOpenXmlPartContainer
eOpenXmlElement
para habilitar um armazenamento de estado por parte ou por documento - Construtores públicos adicionados para
XmlPath
(#1013) - Partes adicionadas para tipos rich data (#1002)
- Métodos adicionados para gerar IDs de parágrafo exclusivas (#1000)
- Corrigido algumas anotações de nulidade que foram definidas incorretamente (#953, #955)
- Corrigido o problema que descartaria um ao criar um
TextReader
XmlReader
em determinadas circunstâncias (#940) - Corrigido um tipo de documentação (#937)
- Corrigido um problema com a adição de crianças adicionais às partes de dados (#934)
- Substituiu algumas entradas de documentação que eram valores genéricos por comentários úteis (#992)
- Corrigido uma regressão em AddDataPartRelationship (#954)
- Tipos adicionais de O19 para corresponder às Especificações Abertas (#916)
- Adição de classes geradas para tipos e restrições do Office 2019 (nº 882)
- Atributos de nulidade adicionados (#840, #849)
- Sobrecarga adicionada para
OpenXmlPartReader
eOpenXmlReader.Create(...)
para ignorar o whitespace (#857) - Adicionado
HexBinaryValue.TryGetBytes(...)
eHexBinaryValue.Create(byte[])
para gerenciar a codificação e a decodificação de bytes (#867) IEquatable<IdPartPair>
Implementado paraIdPartPair
corrigir a implementação de igualdade lá e setters obsoletos (#871)
- Serialização fixa de
CellValue
construtores para usar culturas invariáveis (#903) - Análise fixa para permitir expoentes para valores de célula numérica (#901)
- Correção do gargalo de desempenho maciço quando
UniqueAttributeValueConstraint
está envolvido (#924)
- Office preterido2013. Word. Propriedade Person.Contact. Ele não persiste mais e será removido em uma versão futura (#912)
- Problema corrigido em que
CellValue
pode ser validado incorretamente para valores boolianos (#890)
- Corrigido o problema em que
OpenSettings.RelationshipErrorHandlerFactory
cria XML inválido se o URI resultante for menor que a entrada (nº 883)
- Correção do bug em que as propriedades em
OpenXmlCompositeElement
instâncias não podiam ser definidas como nulas para remover o elemento (#850) - Corrigido
OpenXmlElement.RawOuterXml
para definir corretamente valores nulos sem o lançamento (#818) - Permitir a reescrita de todas as URIs malformadas independentemente do valor de destino (#835)
- Adicionado
OpenSettings.RelationshipErrorHandlerFactory
para fornecer uma maneira de lidar com URIs que interrompem a análise de documentos com links malformados (#793) - Adicionado
OpenXmlCompositeElement.AddChild(OpenXmlElement)
para adicionar crianças na ordem correta por esquema (#774) - Adicionado
SmartTagClean
eSmartTagId
no lugar deSmtClean
eSmtId
(#747) - Substituições adicionadas
OpenXmlValidator.Validate(..., CancellationToken)
para permitir o cancelamento mais fácil da validação de execução longa no .NET 4.0+ (#773) - Sobrecargas adicionais para
CellValue
usardecimal
,double
eint
, bem como métodos de conveniência para analisá-los (#782) - Validação adicionada para
CellType
números e formatos de data (#782) - Adicionado
OpenXmlReader.GetLineInfo()
para recuperarIXmlLineInfo
o leitor subjacente se estiver disponível (#804)
- Exceção fixa que seria gerada se tentasse salvar um documento como FlatOPC se ele contivesse arquivos SVG (#822)
- Atributos adicionados
SchemaAttrAttribute
de volta para compatibilidade com versões anteriores (#825)
- Referência explícita removida para
System.IO.Packaging
em builds do .NET 4.6 (nº 774)
- Correção do gargalo de desempenho maciço quando
IndexReferenceConstraint
eReferenceExistConstraint
estão envolvidos (#763) - Corrigido
CellValue
para incluir apenas três dígitos de sinalização na segunda fração para corrigir o problema de datas de carregamento (nº 741) - Corrigimos alguns erros de indexação de validação que poderiam causar erros de validação errôneos (#767)
- Sistema de validação interna atualizado para não usar a recursão, permitindo um melhor curto-circuito (#766)
- Link de origem quebrado corrigido (#749)
- A compilação assegurada é determinística (#749)
- Arquivo extra removido no pacote NuGet (#749)
- Verifique se .NET Framework builds passam peVerify (#744)
OpenXmlPartContainer.DeletePart
não gera mais uma exceção se não houver uma correspondência para o identificador dado (#740)- Marcar membros obsoletos para não aparecer com o Intelisense (#745)
- Corrigido o problema com
AttributeRequiredConditionToValue
restrição semântica em que a validação poderia falhar na entrada correta (nº 746)
- Enumeração adicionada
FileFormatVersions.2019
(#695) - Elementos de gráfico e adicionados
ChartSpace
para os novos namespaces de 2016. Isso permite que as peças de conexão para criar uma parte do gráfico com estilos de gráfico como "Sunburst" (#687). - Métodos de extensão adicionados
OpenXmlElementFunctionalExtensions.With(...)
, que oferecem meios flexíveis para construirOpenXmlElement
instâncias no contexto de transformações funcionais puras (#679) - Adicionamos versões mínimas do Office para tipos e valores de enumeração (#707)
- Valores adicionais
CompatSettingNameValues
adicionados:UseWord2013TrackBottomHyphenation
,AllowHyphenationAtTrackBottom
eAllowTextAfterFloatingTableBreak
(#706) - Adicionado gfxdata attribue a Arc, Curve, Line, PolyLine, Group, Image, Oval, Rect e RoundRect tipos complexos de forma por MS-OI29500 2.1.1783-1799 (#709)
- Adicionado
OpenXmlPartContainer.TryGetPartById
para habilitar a recuperação de parte filho sem exceção se ela não existir (nº 714) - Propriedade adicionada
OpenXmlPackage.StrictRelationshipFound
que indica se esse pacote contém relações transitórias convertidas de Strict (#716)
- Partes derivadas personalizadas não herdaram partes conhecidas de seu pai, causando falha ao adicionar partes (nº 722)
- Marcados os setters de propriedade em
OpenXmlAttribute
tão obsoletos quanto structs não devem ter estado mutável (#698)
- Atributos garantidos estão disponíveis quando
OpenXmlElement
são inicializados com XML externo (#684, #692) - Alguns erros de documentação (#681)
- Estado removido que o tornava não thread seguro para validar elementos em determinadas condições (#686)
- Insere corretamente elementos fortemente tipado antes de elementos conhecidos que não são fortemente tipado (#690)
- Adicionado o suporte inicial do Office 2016, incluindo
FileFormatVersion.Office2016
,ExtendedChartPart
e outros novos elementos de esquema (#586) - Destino do .NET Standard 2.0 adicionado (#587)
- Suporte a símbolos incluídos para depuração (#650)
- Exposto
IXmlNamespaceResolver
em vez deXmlPath
uma lista formatada de cadeias de caracteres para expor o namespace/o mapeamento de prefixo (#536) IComparable<T>
Implementado eIEquatable<T>
ativadoOpenXmlComparableSimpleValue
para permitir comparações sem boxe (#550)- Adicionado
OpenXmlPackage.RootPart
para acessar facilmente a parte raiz em qualquer pacote (#661)
- Atualizado para v4.7.0 do System.IO.Packaging, que traz uma série de correções de perf (#660)
- Dados consolidados para crianças/propriedades do elemento para reduzir a duplicação (#540, #547, #548)
- Dados binários opacos substituídos por restrições de crianças do elemento por modelo declarativo (#603)
- Uma série de correções de desempenho para minimizar alocações sempre que possível
- Redução de tamanho de 20% de 5,5mb para 4,3mb
- O subsistema de validação passou por uma reformulação drástica. Isso pode causar alterações em quais erros são relatados.
- Corrigido algumas inconsistências de documentação (nº 582)
- Corrigido
ToFlatOpcDocument
,ToFlatOpcString
,FromFlatOpcDocument
eFromFlatOpcString
para processar corretamente partes de importação de formato alternativo ou "partes altChunk" (#659)
- Adicionou uma solução alternativa para um problema do compilador .NET Native que não dá suporte à chamada
Marshal.SizeOf<T>
com um struct que contém propriedades implementadas automaticamente (#569) - Corrigido um erro de documentação (#528)
ListValue
agora implementaIEnumerable<T>
(#385)- Adicionado uma
WebExtension.Frozen
propriedade e obsoleta com ortografiaFronzen
incorreta (#460) - Adicionado uma
OpenXmlPackage.CanSave
propriedade que indica se uma plataforma dá suporte a salvar sem fechar o pacote (#468) - Tipos simples (exceto
EnumValue
eListValue
) agora implementamIComparable<T>
eIEquatable<T>
(#487)
- Estado removido que era transportado em validadores que se manteriam em pacotes quando não estiverem em uso (#390)
EnumSimpleType
A análise foi aprimorada e usa menos alocações e caches para uso futuro (#408)- Corrigido uma série de erros ortográficos na documentação (#462)
- Ao chamar
OpenXmlPackage.Save
.NET Framework, o pacote agora é liberado para o fluxo (#468) - Condição de corrida fixa ao executar uma tradução estrita de atributos (#480)
- Os dados de esquema para validação usam um formato mais compacto que leva a uma redução no tamanho da dll e melhorias de desempenho para carregamento (#482, #483)
- Várias APIs são marcadas como obsoletas, pois têm soluções alternativas simples e serão removidas na próxima grande alteração
- Corrigido alguns valores de restrição para validação que continham o Office 2007, mesmo quando ele só tinha suporte em versões posteriores
- Atualizado
System.IO.Packaging
para 4.5.0, que corrige alguns problemas em plataformas Xamarin, bem como minimiza as dependências do .NET Framework
- Referência de arquivo de licença de pacote corrigido para mostrar a licença do MIT atualizada
- Diretiva de runtime padrão para obter melhor suporte .NET Native.
- A economia de parte fixa deve ser codificada com UTF8, mas nenhuma marca de pedido de byte. Isso fez com que alguns renderizadores não fossem capazes de abrir o documento gerado.
- Exceções fixas geradas quando erros são encontrados ao abrir pacotes para serem consistentes entre plataformas.
- Corrigido o problema em plataformas Mono usando o pacote NuGet System.IO.Packaging (Xamarin etc) ao criar um documento.
- Correção da economia manual de um pacote quando o salvamento automático é falso.
- Correção de dados de restrição de esquema e serialização padronizada entre plataformas.
- Atualizado para a
System.IO.Packaging
versão 4.4.0 que corrige alguma consistência com .NET Framework em pacotes de abertura.
- O pacote agora dá suporte ao .NET 3.5 e ao .NET 4.0, além do .NET Standard 1.3 e .NET Framework 4.6
- Corrigido o problema em que a versão do assembly não foi definida no assembly.
- Falha corrigida quando a validação é invocada no .NET Framework com a nomenclatura forte imposta.
- O SDK agora dá suporte ao .NET Standard 1.3
- Movido para usar System.IO.Packaging do dotnet/corefx para .NET Standard 1.3 e WindowsBase para .NET 4.5.
- Limpou o sistema de build de projeto para usar a CLI do .NET.
- Adicionaram centenas de testes XUnit. Agora há um total de 1333 testes. Eles levam cerca de 20 minutos para serem executados, então seja paciente.
- Incorporou uma substituição
System.IO.Packaging
que corrige alguns bugs graves (mas excepcionais) encontrados na implementação do WindowsBase