Apesar de antigo no Fórum, fiquei muitos anos sem programar Java, mas por necessidade de um projeto, estou fazendo uma pequena aplicação que precisa ler uma planilha Excel.
Eu instalei a API POI, mas '~ao a santo que me faça ler uma planilha.
Alguém pode me ajudar??? Estou a dias pesquisando e tentando.
Eu acho que está faltando bibliotecas no seu projeto.
No meu projeto estou usando as bibliotecas poi-3.9, poi-ooxml-3.9, poi-ooxml-schemas-3.9 e xmlbeans-2.5.
E o código que eu usei como base é esse aqui:
package testesexcel;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/*import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;*/
public class TestesExcel {
/**
* @param args the command line arguments
*/
public static void main(String[] args){
// TODO code application logic here
//usando SS.model
try {
//FileInputStream file = new FileInputStream("Teste 2010.xlsx");
File file = new File("arquivo");
String name = file.toString();
int pos = name.lastIndexOf('.');
String ext = name.substring(pos + 1);
FileInputStream fileIn = new FileInputStream(file);
Workbook obj = null;
if (ext.equals("xlsx")) {
try {
//Metodo aceita o path do arquivo
obj = new XSSFWorkbook(fileIn);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
} else if (ext.equals("xls")) {
try {
//Metodo nao aceita string do path do arquivo
obj = new HSSFWorkbook(fileIn);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
else
{
throw new IllegalArgumentException("Received file does not have a standard excel extension.");
}
int o = 0;
Sheet worksheet = obj.getSheet("Plan1");
Row row;
Cell cell;
for(int i=0;i<=worksheet.getLastRowNum();i++){
row = worksheet.getRow(i);
String linha = "";
for(int j =0;j<2;j++){
cell = row.getCell(j);
if(cell.getCellType()==1)
linha += " | "+ cell.getStringCellValue();
else{
double aux = 0;
int aux2 =0;
aux = cell.getNumericCellValue();
aux2 = (int) aux;
linha += " | " + aux2;
}
}
System.out.println(linha);
}
} catch (FileNotFoundException ex) {
System.out.println("Arquivo não encontrado");
}
Bom dia, xandelol eu coloquei seu codigo exatamente e as bibliotecas exatamentes q vc postou mas ele continua dando erro de biblioteca, tentei a biblioteca poi-3.7 e alguns imports aceitaram mas o restante nao consegui… tem alguma dica?
Dande obrigada. eu consegui resolver. Os aquivos vieram zipados com extensao jar ai nao importava as bibliotecas ai acabei descobrindo e descompactei. ai consegui trazer a planilha para a jtable, só q tem um problema… quando uma celula do excel esta vazia, eu faço a importação p jtable aquela coluna em vez de preencher vazio ela pula pra proxima, inserindo o valor da celula posterior no lugar da coluna q deveria receber vazio.
anderson, cmg quando acontece isso, geralmente ja vem do proprio arquivo, ai eu altero la e resolve.
isso ocorre pq o numero é mto grande, deixa ele no excel como texto.