[.NET] ClosedXml: Uma alternativa ao Excel Interop

Apesar de ser bastante flexível e simples de usar, a biblioteca interop do Excel deixa bastante a desejar em termos de desempenho. É verdade que se tivessemos de fazer o trabalho à mão, levaria bastante mais tempo, mas quando se pode ganhar tempo, acho que tudo vale a pena experimentar.

Após várias pesquisas, encontrei uma possivel solução que resolve alguns destes problemas, é gratuita e chama-se “ClosedXML”.

closedxml

Em termos de sintaxe, é bastante semelhante ao excel interop, em baixo mostro um exemplo de criação de um novo livro excel,  adição de uma worksheet e de seguida gravo o livro:

 

 

Para abrir um livro já existente e escrever no mesmo:

 

 

E basta isto, para escrever e formatar algumas células no ClosedXML, aqui, uma das principais diferenças quando comparado ao Interop, é o facto de em vez de Cells para fazer referência à célula, usa-se apenas Cell e em vez [] usa-se (), destaca-se o facto de não ser necessário fechar a instância do Excel no fim da sua utilização, pois esta biblioteca escreve diretamente nos xml dos ficheiros, não sendo necessário ter a aplicação aberta para enviar comandos.

No entanto, destaca-se o facto de não suportar imagens (se tentar copiar uma folha completa, as imagens não irão passar para a nova), o facto de apenas suportar formatos de ficheiros baseados no padrão “Open XML” (.xlsx) bem como o facto de não suportar ficheiros com macros (.xlsm), apesar de existirem por aí alguns workarounds mas que ainda não experimentei.

Pode descarregar o ClosedXML gratuitamente em: https://closedxml.codeplex.com/

Fontes Distorcidas no Excel

Há algum tempo, na empresa onde trabalho, um dos utilizadores teve um estranho problema no Excel, as fontes estavam distorcidas e até imperceptíveis.

Infelizmente, não tenho nenhum screenshot deste problema, no entanto caso possua algum problema com as fontes das aplicações do Office 2013 (ou até imagens principalmente nas ribbons), a solução que irei apresentar, poderá ajudar a resolver o seu problema.

excel_logo

Esta situação acontece devido a uma das funcionalidades do Office 2013, que é a utilização da aceleração por hardware, que apesar de trazer melhorias gráficas às aplicações, pode também criar problemas com drivers mal elaborados da placa gráfica ou inadequados ao sistema operativo utilizado e dessa forma causar alguns constrangimentos.

Para resolver o problema, o recomendado é desativar a aceleração por hardware, cujo procedimento é o seguinte:

1. Clicar em file (Ficheiro)

2. Selecionar Options (Opções)

3. No menu que surge, deverá marcar a checkbox “desativar aceleração por hardware” (Disable Hardware Acceleration).

excel_hardwar_acceleration

 

Dê um clique em OK e espero que o seu problema tenha ficado resolvido.