[RESOLVIDO] Ler arquivos XLSX (Office 2007/2010)

Boa Tarde galera !!!

Estou precisando ler arquivos do excel 2007. Alguém conhece alguma API java que faça este tipo de serviço ???

Valeu! Fico no aguardo… Obrigado !

Apache POI

Valeu “mtakeda” funcionou legal !!!

:slight_smile:

Fala galera!

Eu estou manipulando arquivos .[b]xls[/b] com o POI sem dificuldades, porém não estou conseguindo manipular [b].xlsx[/b]! Já estou apanhando há alguns dias. Baixei a última versão([b]poi-bin-3.8-beta3-20110606.zip[/b]) mas não resolveu.
Vocês sabem me dizer se o simples fato de instanciar classes XSSF ao invés de HSSF já resolveria este problema?! Pois tentei fazer isso, mas também não obtive sucesso.
Consegui o exemplo anexo aqui no site do POI. Ele está lendo/escrevendo .xls corretamente. Alguém poderia fazer as alterações necessárias nele para que possam ser lidos e escritos arquivos [b].xlsx[/b]?! Isso já me ajudaria muito a entender as diferenças da biblioteca.

Obrigado.

Descobri aonde estava errando…

Dentro da pasta poi-bin-3.8-beta3-20110606\poi-3.8-beta3 existe uma pasta chamada ooxml-lib que contém 3 jars que eu não estava importando. Após importá-los e instanciar objetos XSSF ao invés de HSSF resolvi o problema. São eles:
dom4j-1.6.1.jar
stax-api-1.0.1.jar
xmlbeans-2.3.0.jar

Vou deixar registrado aqui, caso alguém tenha a mesma distração.
Valeu.

1 curtida

Olá!
Tentei seguir o seu exemplo para ler um ficheiro do Excel 2007 e não estou conseguindo. Segue o código que fiz:

public static void main(String[] args) {
        // Office 2007 e 2010:
        try {
			FileInputStream fileInputStream = new FileInputStream("E:\\TesteJava.xlsx");
			XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
			XSSFSheet worksheet = workbook.getSheet("POI Worksheet");
			XSSFRow row1 = worksheet.getRow(0); //linha lida
			
			XSSFCell cellA1 = row1.getCell(0);  //celula lida
			String a1Val = cellA1.getStringCellValue(); 
			
			XSSFCell cellB1 = row1.getCell(1);
			String  b1Val = cellB1.getStringCellValue();
			
			XSSFCell cellC1 = row1.getCell(2);
			boolean c1Val = cellC1.getBooleanCellValue();
			
			XSSFCell cellD1 = row1.getCell(3);
			double d1Val = cellD1.getNumericCellValue();

			System.out.println("A1: " + a1Val);
			System.out.println("B1: " + b1Val);
			System.out.println("C1: " + c1Val);
			System.out.println("D1: " + d1Val);
                        
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }

Se executar o código recebo o seguinte erro:

run:
Exception in thread "main" java.lang.NullPointerException
	at leficheiroexcel_2.Main.main(Main.java:30)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

O erro aponta para a seguinte linha:
XSSFRow row1 = worksheet.getRow(0); //linha lida

Desde já, um muito obrigado.