Estou tentando ler os dados de uma tabela excel com o Apache POI, mas sempre da erro de Index aqui:
Contratos contrato = Contratos.builder()
.data(celula.get(0).getDateCellValue())
// .numero((int) celula.get(1).getNumericCellValue())
// .nome(celula.get(0).getStringCellValue())
// .valor(new BigDecimal(celula.get(0).getNumericCellValue()))
// .status(celula.get(0).getStringCellValue())
// .qtd((int) celula.get(5).getNumericCellValue())
.build(); System.out.println(" - "+contratos);
contratos.add(contrato);
O primeiro index de data << .data(celula.get(0).getDateCellValue()) >> vai certo mas os demais todos dão erro, são esses que estão comentados, dei um sout antes e os dados estão sendo lidos corretamente da tabela excel
Alguém sabe como resolver isso?
Tentei fazer como nesse vídeo: https://www.youtube.com/watch?v=mxaFk0RmU1I&t=1509s
Estou fazendo no netbeans com versão do java 1.8
código completo:
package br.com.**strong text**java;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import lombok.Cleanup;
import org.apache.commons.collections4.IteratorUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Gerenciador {
public List<Contratos> criar() throws IOException{
List<Contratos> contratos = new ArrayList<>();
//Recuperando o arquivo excel
@Cleanup FileInputStream file = new FileInputStream( "E:\\Documents (D)\\OneDrive\\Documents\\NetBeansProjects\\mavenproject2\\src\\main\\java\\resources\\Pasta1.xlsx");
Workbook work = new XSSFWorkbook(file);
//Setando a aba da tabela
Sheet sheet = work.getSheetAt(0);
//Setando as linhas da tabela
List<Row> rows = (List<Row>) toList(sheet.iterator());
//Remover a primeira linha(cabeçalho) da tabela
rows.remove(0);
rows.forEach(row ->{
//me da todas as celulas da tabelas
//Setando as celulas
List<Cell> celula = (List<Cell>) toList(row.cellIterator());
Contratos contrato = Contratos.builder()
.data(celula.get(0).getDateCellValue())
// .numero((int) celula.get(1).getNumericCellValue())
// .nome(celula.get(0).getStringCellValue())
// .valor(new BigDecimal(celula.get(0).getNumericCellValue()))
// .status(celula.get(0).getStringCellValue())
// .qtd((int) celula.get(5).getNumericCellValue())
.build(); System.out.println(" - "+contratos);
contratos.add(contrato);
});
return contratos;
}
//Retorna lista da tabela
public List<?> toList(Iterator<?> iterator){
return IteratorUtils.toList(iterator);
}
public void imprimir(List<Contratos> contratos){
contratos.forEach(System.out::println);
}
}