![](/img/trans.png)
[英]In Java, how do I take the values of a 2D array and store them in another 2D array with different column and row size?
[英]How do I store the values in a 2D array for later use?
我正在使用Apache POI将数据从excel文件读取到2D数组中。 我认为我的错误在于我的数组代码,而不是POI元素。 该方法运行后,我无法使用任何数组数据,它们全部为null。
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
因此,它正在读取数据就很好了。 但是不会存储数据,因为当我尝试调用单元格以备后用时,它为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
。
考虑添加data[i][j] = value;
在System.out.println("Value: " + value);
。
您将获得所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.