1
resposta

Como transformar dados de um Array em variáveis

Oi pessoal! Sou iniciante em programação mas estou fazendo um projeto complexo pro meu nível! Estou fazendo os cursos de Java para entender melhor o que estou implementando no projeto. Mas agora estou com uma dúvida que não sei mais a quem recorrer, então resolvi postar aqui pra ver se alguém consegue me ajudar! Eu importei uma planilha Excel e gostaria de usar os dados de cada coluna em outro lugar, então preciso desses dados em forma de variáveis. Esse é o meu código:

` public class ImportaExcel {

public static void main(String ar[]) {
    ImportaExcel rw = new ImportaExcel();
    rw.readDataFromExcel();
}
Object[][] data = null;

private XSSFWorkbook workbook;
public File getFile() throws FileAlreadyExistsException {
    File here = new File(
            "C:\\Users\\bruna.pereira\\eclipse-workspace\\teste\\src\\teste.xlsx");
    return new File(here.getAbsolutePath());
}
public Object[][] readDataFromExcel() {
    final DataFormatter df = new DataFormatter();

    try {
        FileInputStream file = new FileInputStream(getFile());
        workbook = new XSSFWorkbook(file);
        XSSFSheet sheet = workbook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.iterator();
        int rownum = 0;
        int colnum = 0;
        Row r = rowIterator.next();
        int rowcount = sheet.getLastRowNum();
        int colcount = r.getPhysicalNumberOfCells();
        data = new Object[rowcount][colcount];
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            if (row.getRowNum() == 0)
                continue;
            Iterator<Cell> cellIterator = row.cellIterator();
            colnum = 0;                
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                data[rownum][colnum] = df.formatCellValue(cell);
                System.out.print(df.formatCellValue(cell));
                colnum++;
                System.out.println("");
            }    
        }
        file.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return data;
}

}

`

Eu debuguei o código e os dados da planilha estão retornando da seguinte forma (só um exemplo):

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguém consegue me dar um help?

1 resposta

Olá Bruna, tudo bem?

Bruna, realmente aconselho assistir os primeiros cursos sobre Java para ter a bagagem necessária.

Na minha opinião, o mais correto é criar para cada linha no excel um objeto que representa os dados dessa linha e guardar esses objetos numa lista (e para poder criar o objeto precisa ter uma classe antes.).

No link abaixo tem um exemplo, bem parecido com seu. Ai para cada linha é criado um objeto "Car" (no excel tem dados sobre carros) e adicionado numa lista:

https://itecnote.com/tecnote/java-excel-pojo-mapping-in-poi/

List<Car> carsInventory = new ArrayList<>();
while (iterator.hasNext()) {

    Car car = new Car();

    Row currentRow = iterator.next();

    //.....lendo celulas da row

    carsInventory.add(car); //guardando o objeto na lista

Espero ter ajudado e bons estudos!