Qual das 2 APIs é mais simples de ler / escrever / editar planilhas do Excel? Essas APIs não oferecem suporte a extensões CSV?
Usando JXL para file.xls e file.xlsx, recebo 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)
Para extensões .xls e .xlsx. A versão Java que estou usando é: JDK1.6
java
excel
apache-poi
jxl
Swagatika
fonte
fonte
Respostas:
Usei o JXL (agora "JExcel") e o Apache POI . No começo eu usei JXL, mas agora uso o Apache POI.
Primeiro, aqui estão as coisas em que ambas as APIs têm a mesma funcionalidade final:
No entanto, existem muitas diferenças:
Além disso, o POI contém não apenas a API "usermodel" principal, mas também uma API baseada em eventos, se tudo o que você quiser fazer for ler o conteúdo da planilha.
Concluindo, por causa da melhor documentação, mais recursos, desenvolvimento ativo e suporte ao formato Excel 2007+, eu uso o Apache POI.
fonte
getContents()
método sujo em JExcelAPI me economiza muito tempo. Com o POI, você deve verificar seu tipo de célula, depois pegar seu valor (se for uma célula Numérica, você precisa verificar se é uma célula de Data) de acordo com seu tipo, e finalmente convertê-lo para o valor String com métodos diferentes, isso é tão inconveniente. Não consigo imaginar que o POI não forneça um método tão sujo, mas conveniente, como o JExcelAPI.Eu usei o POI.
Se você usar isso, fique de olho nos formatadores de células: crie um e use-o várias vezes ao invés de criar cada vez para a célula, é uma diferença enorme de consumo de memória ou dados grandes.
fonte
Não estou familiarizado com JXL, mas usamos POI. O POI é bem mantido e pode lidar com o formato .xls binário e o novo formato baseado em xml que foi introduzido no Office 2007.
Os arquivos CSV não são arquivos do Excel, são arquivos baseados em texto, portanto, essas bibliotecas não os lêem. Você precisará analisar um arquivo CSV sozinho. Não conheço nenhuma biblioteca de arquivos CSV, mas também não procurei.
fonte
Para ler arquivos CSV "simples" em Java, existe uma biblioteca chamada OpenCSV, disponível aqui: http://opencsv.sourceforge.net/
fonte