#java
#java
Вопрос:
XSSFSheet sheet = workbook.getSheetAt(0);
//Iterate through each rows one by one
/* Iterator<Row> rowIterator = sheet.rowIterator();
while (rowIterator.hasNext())
{
Row row = (Row)rowIterator.next();
//For each row, iterate through all the columns
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = (Cell)cellIterator.next();*/
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator <Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
//Check the cell type and format accordingly
// DataFormat format=((XSSFWorkbook) cell).createDataFormat();
switch (cell.getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() "t");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() "t");
}
}
System.out.println("");
}
file.close();
}
Здесь я получаю вывод в виде
Идентификатор Имя Телефон
1.0 Санджай 8220850855
2.0 Aswin 9.897654321E9
3.0 Santhosh 9.876543212E9
4.0 Nandu 9.089876565E9
5.0 Виджай 9.090906767E9
Комментарии:
1. Вы хотите прочитать целочисленные данные как int ? вы можете попробовать прочитать его как строку, а затем проанализировать его до требуемого типа
2. Подсказка: пожалуйста, дайте некоторые отзывы относительно моего ответа. Если это поможет, вы можете принять это; в противном случае; не стесняйтесь, дайте мне знать, когда у вас возникнут дополнительные вопросы.
Ответ №1:
Когда вы обратитесь к javadoc для метода getNumericalCellValue(), вы обнаружите: он возвращает double .
[ и просто для записи: это Java. Вы не можете вызывать один и тот же метод и ожидать, что он вернет значение int для одного вызова; и double для другого вызова! Это было бы возможно только в том случае, если метод был написан для возврата объекта Number; тогда результат может быть либо целым, либо двойным. Но для примитивных типов это невозможно! ]
Итак, ваша проблема заключается в недоразумении с вашей стороны: если ячейка имеет «числовое» значение; тогда это означает: вы можете получить доступ к значению ячейки как числу с плавающей запятой! На этом уровне нет различий между «int» и «с плавающей запятой».
Таким образом: когда вы знаете, что первый столбец содержит только целые числа; ну, тогда вы должны сделать это «неявное» понимание явным; например, путем округления / форматирования значений для первого столбца!
Другими словами: значение такое, какое оно есть. Вы должны изменить интерпретацию этого значения; на основе ваших метаинформаций о данных, с которыми вы работаете!
Наконец: этот javadoc даже сообщает вам в конце: