#java #selenium #apache-poi
#java #selenium #apache-poi
Вопрос:
Я пытаюсь прочитать матрицу Excel -2 * 2 через Apache POI. Но первое значение, возвращаемое 2D-массивом, равно [null, нуль]. Пожалуйста, проверьте мой код и посоветуйте подходящие исправления.
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;
}
Представление отладки, в котором мы можем видеть, что первое значение, сохраненное в переменной data, равно null, null
Excel, который я пытаюсь прочитать. Мне нужны только данные имени пользователя и пароля (2 * 2). Не данные заголовка и режима выполнения.
Ответ №1:
Конечно, значение в индексе 0
будет нулевым, потому что i
начинается с 1
, а не 0
for (int i = 1; i <= rowCount; i ) //i starts from one
...
data[i][j] = value;
либо инициализируйте i
с 0, либо сделайте вот так
data[i-1][j] = value;
Ответ №2:
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;
}
}