如何将值存储在二维数组中供以后使用?

How do I store the values in a 2D array for later use?

我正在使用 Apache POI 从 excel 文件中将数据读入二维数组。我认为我的错误在于我的数组代码,而不是 POI 元素。方法是运行后,我无法使用我的任何数组数据,它都是空的。

public class ExcelRead {

public static void main(String[] args) throws Exception {
    File excel = new File ("C:/Users/user/Desktop/Files/Dashboards.xlsx");
    FileInputStream fis = new FileInputStream(excel);

    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet = wb.getSheetAt(0);

    int rowNum = sheet.getLastRowNum()+1;
    int colNum = sheet.getRow(0).getLastCellNum();
    String[][] data = new String[rowNum][colNum];
    for (int i=0; i<rowNum; i++){
        //get the row
        XSSFRow row = sheet.getRow(i);
            for (int j=0; j<colNum; j++){
                //this gets the cell and sets it as blank if it's empty.
                XSSFCell cell = row.getCell(j, Row.CREATE_NULL_AS_BLANK);
                String value = String.valueOf(cell);                             
                System.out.println("Value: " + value);

            }            
       }
    System.out.println("End Value:  " + data[2][2]);
    }
}

这是我的输出(结果对于数组的任何单元格都是相同的,我只是使用 [2][2] 因为我知道它应该有一个值。

Value: Project Name
Value: Dashboard URL
Value: To Email
Value: From Email
Value: Jira Login
Value: Password (same for )
Value: Image Location
Value: Run Automation
Value: Project1
Value: ProjectURL
Value: testemail@email.com
Value: QAAutomation@email.com
Value: QAAutomation
Value: QARocks#2
Value: test
Value: yes
Value: Project2
Value: https://projectURL
Value: testemail@email.com
Value: QAAutomation@email.com
Value: QAAutomation
Value: QARocks#2
Value: test
Value: yes

End Value: null

所以它可以很好地读取数据。但不存储数据,因为当我尝试调用一个单元格供以后使用时,它为空。我的第一个输出 (Value:"") 是否打印每次通过数组迭代的结果?我不确定这是否有意义,但它似乎正在读取 Excel 文件,一个一个地吐出单元格,但不存储它们供我以后使用。

您只是循环遍历项目而不是将它们保存在数组中。

要将其保存在数组中,您需要执行以下操作:

array[i][j] = value;

你的情况:

for (int i=0; i<rowNum; i++){
        //get the row
        XSSFRow row = sheet.getRow(i);
            for (int j=0; j<colNum; j++){
                //this gets the cell and sets it as blank if it's empty.
                XSSFCell cell = row.getCell(j, Row.CREATE_NULL_AS_BLANK);
                String value = String.valueOf(cell);                             
                System.out.println("Value: " + value);
                data[i][j] = value;
            }            
       }

因为数据数组不包含任何内容。从 excel 文件中读取时,您忘记将该数据添加到数组中。如果未初始化,String 的默认值为 null.

考虑在 System.out.println("Value: " + value); 之后添加 data[i][j] = value;

您将获得所需的输出。