Qual é a melhor API para ler folhas Excel em java-JXL ou Apache POI [fechado]

Qual das 2 APIs é mais simples de ler/escrever / editar folhas do excel ? Estas API não suportam extensões CSV ?

a usar o JXL para o ficheiro.xls e file.xlsx, eu tenho uma exceção como:

jxl.read.biff.BiffException: Unable to recognize OLE stream
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
    at jxl.read.biff.File.<init>(File.java:127)
    at jxl.Workbook.getWorkbook(Workbook.java:268)
    at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
    at core.ReadXLSheet.init(ReadXLSheet.java:22)
    at core.ReadXLSheet.main(ReadXLSheet.java:72)

ambos para .xls and .extensões xlsx. Java Version I am using is: JDK1. 6

Author: Rubens Mariuzzo, 2013-02-20

4 answers

Usei ambos JXL (agora "JExcel") e Apache POI. No início usei JXL, mas agora uso POI Apache.

Primeiro, Aqui estão as coisas onde ambas as APIs têm a mesma funcionalidade Final:

  • ambos estão livres
  • estilo das Células: Alinhamento, fundos( cores e padrões), contornos (tipos e cores), suporte do tipo de letra (nomes dos tipos de letra, cores, tamanho, negrito, itálico, strikeout, sublinhado)
  • fórmulas
  • hiperligações
  • célula reunida regiões
  • Tamanho das linhas e Colunas
  • formatação dos dados: Números e datas
  • invólucro de texto dentro das células
  • Painéis Congeladores
  • Suporte do cabeçalho / rodapé
  • Ler / Escrever folhas de cálculo existentes e novas
  • ambos tentam manter os objectos existentes nas folhas de cálculo que lêem intactos, tanto quanto possível.

No entanto, existem muitas diferenças:

  • talvez a diferença mais significativa seja que JXL Java não suporta the Excel 2007+".XLSX " format; it only supports the old BIFF (binary) ".formato xls. Apache POI suporta ambos com um design comum.
  • Além disso, a parte Java da API JXL foi atualizada pela última vez em 2009 (3 anos, 4 meses atrás como eu escrevo isso), embora pareça que existe uma API C#. Apache POI é ativamente mantido.
  • O JXL não suporta formatação condicional, o Apache POI suporta, embora isto não seja assim tão significativo, porque pode formatar as células com o teu próprio código.
  • JXL não suporta rich text formatação, ou seja, formatação diferente dentro de uma cadeia de texto; o Apache POI suporta-a.
  • O JXL só suporta certas rotações de texto: horizontal / vertical, + / - 45 graus e empilhado; o Apache POI suporta qualquer número inteiro de graus mais empilhado.
  • O JXL não suporta formas de desenho; o Apache POI suporta.
  • O JXL suporta a maioria das definições de configuração de páginas, tais como Paisagem / Retrato, margens, papel tamanho e Zoom. O Apache POI suporta tudo isso, além de repetir linhas e Colunas.
  • O JXL não suporta painéis divididos; o Apache POI suporta.
  • O JXL não suporta a criação ou manipulação de gráficos; esse suporte ainda não existe no Apache POI, mas uma API está lentamente a começar a formar-se.
  • o Apache POI tem um conjunto mais extenso de documentação e exemplos disponíveis do que o JXL.

Além disso, POI não contém apenas a API principal "usermodel", mas também uma API baseada em eventos se tudo o que você quer fazer é ler o conteúdo da planilha.

Em conclusão, por causa da melhor documentação, mais recursos, desenvolvimento ativo e suporte ao formato Excel 2007+, eu uso o Apache POI.

 236
Author: rgettman, 2013-02-20 18:12:07
Eu usei o POI.

Se você usar isso, fique de olho nesses formatadores de células: crie um e use-o várias vezes em vez de criar cada vez para a célula, ele é uma enorme diferença de consumo de memória ou grandes dados.

 11
Author: , 2013-02-20 13:14:37

Não estou familiarizado com o JXL e usamos o POI. POI é bem mantido e pode lidar com ambos os binários .o formato xls e o novo formato xml que foi introduzido no Office 2007.

Os ficheiros CSV não são ficheiros excel, são ficheiros baseados em texto, por isso estas bibliotecas não os lêem. Você vai precisar analisar um arquivo CSV você mesmo. Não conheço nenhuma biblioteca de ficheiros CSV, mas também não procurei.

 5
Author: jwesley, 2013-02-20 13:43:26

Para ler ficheiros CSV "simples" em Java, existe uma biblioteca chamada OpenCSV, disponível aqui: http://opencsv.sourceforge.net/

 1
Author: Jerry Oberle, 2014-01-03 15:43:15