Pergunta sobre c#, openxml, oledb – OLE DB vs Open XML SDK vs Excel.interop

11

Eu preciso ler arquivos XLSX e extrair uma quantidade máxima de conteúdo a partir dele. Qual das APIs devo usar?

OLE DB, Open XML SDK ou Interop do Excel?

Qual é o mais fácil de usar?Você consegue recuperar todas as informações usando uma ou outra? ou seja, data, hora, células mescladas, tabelas, pivotetes, etc.
O Open XML SDK não seria tão simples no início, mas o bom é que existem bibliotecas de software livre que tornam as tarefas triviais. Meu conselho é que, se você não se importa usando dlls de terceiros, o Open XML é o caminho a percorrer. Duas excelentes bibliotecas que posso sugerir são o ClosedXML e o EPPlus. Você pode imediatamente começar a consultar com o Linq, o que é legal. nawfal

Sua resposta

1   a resposta
17

Você pode experimentar todos eles e escolher o que mais combina com você ...

Dependendo dos dados que você deseja ler, sugiro que você use o Open XML sobre Interop ou Ole DB.
Não conheço um SDK XML aberto, embora tenha alguma experiência comEPPlus biblioteca que eu estou usando muito e posso dizer apenas boas palavras sobre isso - é rápido, fácil de aprender, com bons exemplos. A biblioteca é baseada no formato XML do Open Office, então eu suponho que é praticamente o mesmo que o SDK que você mencionou, e é capaz de ler e escrever arquivos do Excel 2007 e 2010 com facilidade.
Na Web vinculada, você encontrará uma biblioteca, uma documentação e alguns exemplos de projetos "Hello World" para fazer o download.

Por que essa biblioteca em primeiro lugar? Porque com ele você será capaz de ler não apenas os valores das células, mas também suas cores, fontes, larguras e alturas, mesclando e todas aquelas coisas detalhadas, que você pode não apenas ler, mas também modificar. Além do mais, você não precisa do Excel instalado para fazer isso.

Em segundo lugar - apenas no caso de você precisar extrairdados tabulares da planilha - você pode jogar com o OLE DB. Eu tenho medo com isso você não será capaz de extrair qualquer informação sobre formatos, cores, etc., assim como os dados devem estar em uma planilha de tabela tabular, então você pode tratar como uma tabela de banco de dados.

O último é o Interop, porque:
- é uma biblioteca COM, então você precisa ter muito cuidado ao jogar com ele via .NET, já que é fácil causar alguma coisa feia e difícil de encontrar vazamentos de memória (confirmado por mim mesmo) - se você não descarta seus objetos corretamente, deixa o processo Excel.exe aberto,
- é muito mais lento que os métodos anteriores
- basicamente, quase não tem mais valor agregado que um dos métodos anteriores (EPPlus ou OleDB) e requer que o Excel seja instalado na máquina do cliente, então por que usá-lo?

Boa sorte então.

Um motivo para ir a rota COM será a abrangente API da Microsoft. Embora as bibliotecas de terceiros devam cobrir o caso de uso de 99 desenvolvedores de PCs, elas podem ainda não estar completas. Boa resposta +1. Eu gosto mais da opção Open XML. Apenas triste você tem que escrever muito clichê. nawfal
Resposta muito abrangente, obrigado. Eu testei o SDK openxml, e devo dizer que requer um monte de código clichê. Vamos dar uma olhada no EPP. cecemel
A própria Microsoft não recomenda o uso do Interop for Server Deployment Ives

Perguntas relacionadas