简体   繁体   English

Apache POI-以2D数组读取Excel文件-返回空值

[英]Apache POI - Reading excel file in 2D array - returning null values

I am trying to read Excel -2*2 matrix through Apache POI. 我正在尝试通过Apache POI读取Excel -2 * 2矩阵。 But the first value returned by 2D array is [null,null]. 但是2D数组返回的第一个值是[null,null]。 Please check my code and advise for suitable corrections. 请检查我的代码并建议适当的更正。

public String[][] getDataArray(String sheetName)
{

    String value ="";
    String[][] data = null;


    int rowCount = wb.getSheet(sheetName).getLastRowNum();
    int colCount = wb.getSheet(sheetName).getRow(1).getLastCellNum()-1;

    data = new String[rowCount][colCount];

    for(int i=1; i<=rowCount;i++)
    {           

        Row row = wb.getSheet(sheetName).getRow(i);
        for(int j=0;j<colCount;j++)
        {


            Cell cell = row.getCell(j);
            if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC)
            {
                value = ""+cell.getStringCellValue();
            }
            else
            {
                value = cell.getStringCellValue();
            }
            data[i][j] = value;


        }
    }
    return data;

}

The debug view where we can see that the first value stored in the variable data is null, null 在调试视图中,我们可以看到存储在变量数据中的第一个值是null,null

The excel which i am trying to read. 我正在尝试阅读的Excel。 I need only the userName and password data(2*2) alone. 我只需要userName和password data(2 * 2)。 Not the header and Run mode datas. 不是标题和运行模式数据。

在此处输入图片说明

Of course the value in the index 0 will be null because the i starts from 1 and not 0 当然,索引0的值将为null,因为i1开始而不是0

for (int i = 1; i <= rowCount; i++) //i starts from one
...
data[i][j] = value;

either initialize the i from 0 or do like this 从0初始化i或像这样

data[i-1][j] = value;
public static String[][] getSheetData(final String fileName, final String workSheetName)
            throws Exception {
        Integer lastRow = null;
        short lastCol = 0;
        String[][] sheetData = null;
        FileInputStream file=new FileInputStream(MettlTest.class.getClass().getResource("/" + fileName).getPath());
        workbook = new XSSFWorkbook(file);
        sheet = workbook.getSheet(workSheetName);
        try {
            XSSFRow row;
            XSSFCell cell;
            lastRow = sheet.getPhysicalNumberOfRows();
            lastCol = sheet.getRow(1).getLastCellNum();
            sheetData = new String[lastRow - 1][lastCol];
            for (int r = 1; r < lastRow; r++) {
                row = sheet.getRow(r);
                if (row != null) {
                    for (int c = 0; c < lastCol; c++) {
                        cell = row.getCell(c);
                        if (cell == null) {
                            sheetData[r][c] = null;
                        } else {
                            sheetData[r-1][c] = new DataFormatter().formatCellValue(cell);
                        }
                    }
                }
            }
            return sheetData;
        } 

        catch (final Exception e) {
            throw e;
        }
        finally {
            try {
                file.close();
            } catch (IOException io) {
                Reporter.log("Unable to close File : " + fileName);
                throw io;
            }
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM