使用 Apache POI 在 Excel 中读取二维双数组

Reading 2D double array in Excel Using Apache POI

我正在尝试使用 Apache POI 读取 excel 文件并将其转换为二维对象数组。附上代码部分。

    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.

您需要将第一个循环中的索引更改为 0(excel 文件中的第一个字段) 但在行中,您必须提供索引 + 1 bc,您需要从第二个字段读取。 第二个循环和单元格字段的类比相同


 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();

它的返回结果:

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