0

I am trying to make use of Apache POI to read an excel file and convert it to a 2-dimensional object array. Attached is the code section.

    Workbook workbook = new XSSFWorkbook(inputStream);
    Sheet firstSheet = workbook.getSheetAt(1);
    int numRows = 3;
    int cols = 5;
    double[][] excelData = new double[numRows][cols];
    for (int i = 1; i < numRows; i++) {
        Row row = firstSheet.getRow(i);
        if (row != null) {
            for (int j = 1; j < cols; j++) {
                Cell cell = row.getCell(j);
                if (cell != null) {
                    try {
                        excelData[i][j] = cell.getNumericCellValue();
                    } catch (IllegalStateException e) {
                        System.out.println("Cell data is not a double");
                    }
                }
            }
        }
    }
    workbook.close();
    inputStream.close();
    return excelData;
}

enter image description here This is my excel sheet and I want to "just" read the blue part of it as a 2d array, but after running the code the first row and column all are zero and I don't want it, appreciate your help on how can quickly pull out all the zeros enter image description here.

1 Answer 1

1

You need to change index in the 1st loop to 0 (first field in excel file) but in row you must provide index + 1 bc you need to read from the 2nd field. Same analogy for 2nd loop and cell field


 Workbook workbook = new XSSFWorkbook(new File("d:\\book1.xlsx"));
        Sheet firstSheet = workbook.getSheetAt(1);
        int numRows = 3;
        int cols = 5;
        double[][] excelData = new double[numRows][cols];
        for (int i = 0; i < numRows; i++) {
            Row row = firstSheet.getRow(i + 1);
            if (row != null) {
                for (int j = 0; j < cols; j++) {
                    Cell cell = row.getCell(j + 1);
                    if (cell != null) {
                        try {
                            if (cell.getCellType().equals(CellType.NUMERIC)) {
                                excelData[i][j] = Double.valueOf(cell.getNumericCellValue());
                            }
                        } catch (IllegalStateException e) {
                            System.out.println("Cell data is not a double");
                        }
                    }
                }
            }
        }
        workbook.close();

Returned result for it:

0.041256 0.033079 -0.01138 -0.02138 -0.01138 
0.041256 0.033079 -0.01138 -0.01138 -0.01138 
0.020628 0.01654 -0.00569 -0.10569 -0.00569 
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.