2016-03-23 6 views
2

Я пытаюсь загрузить и прочитать содержимое файла Excel. Он отлично работает, если содержимое находится в формате String. Но мое содержание в файле первенствовать выглядит следующим образом:Прочитать файл Excel без изменения его содержимого

02:02:02 
03:03:03 
04:04:04 

Все, что я хочу сделать, это извлечь содержимое, как это. Но когда я тяну эти данные снова, я в конечном итоге получить содержание следующим образом:

8.4745370370370374E-2 
0.12711805555555555 
0.169490740740741 

Есть ли какой-нибудь способ, чтобы не изменить содержание?

while (rowIterator.hasNext()) 
    { 
     Row row = rowIterator.next(); 
     //For each row, iterate through all the columns 
     Iterator<Cell> cellIterator = row.cellIterator(); 

     while (cellIterator.hasNext()) 
     { 
      Cell cell = cellIterator.next(); 
      cell.setCellType(Cell.CELL_TYPE_STRING); 
      //Check the cell type and format accordingly 
      switch (cell.getCellType()) 
      { 
       case Cell.CELL_TYPE_NUMERIC: 
       System.out.print(cell.getNumericCellValue()); 
       break; 

       case Cell.CELL_TYPE_STRING: 
       System.out.print(cell.getStringCellValue()); 
       break; 
      } 
     } 
    } 
+1

вы не изменяя содержимое на чтение, это просто, что Excel является «форматирование», когда вы смотрите на него в Excel. См. Также этот вопрос: http://stackoverflow.com/questions/3014803/apache-poi-time-cell –

+0

@RC. В этом файле нет никаких формул. Просто данные, введенные, как указано выше. Так что я должен решить это на листе excel, прежде чем даже прочитать его? Основываясь на этой ссылке, кажется, POI предполагает, что это какой-то формат даты, но в моем случае это 02:03:04, т. Е.: 2 минуты 3 секунды 4 milisecs. – kar

+1

Я ничего не говорил о формулах; отформатированное время - это число в excel, попробуйте следующее: в следующем типе ячейки '= + 0' (и прочитайте ответ связанного вопроса). Если вы можете изменить файл Excel, вы можете заставить Excel «использовать текст», используя '' 02: 03: 04' (обратите внимание на основную цитату) –

ответ

2

Формат вашей ячейки, вероятно, не установлен в текст. Проверьте это:

Cell type custom

Cell Type Text

Как вы можете видеть, когда вы не явный установить тип клеток в текст, первенствует пытается угадать его. Поэтому, когда вы импортируете его, он, вероятно, импортируется как Time. Вы можете прочитать это как текст, явным образом задав тип ячейки Text, а затем набрав время 02:02:02, или вы можете прочитать его как формат Excel, а затем преобразовать его. Узнайте больше о чтении даты первенствовать: How to read Excel cell having Date with Apache POI? Reading date values from excel cell using POI HSSF API

+0

Пробовал текст и номер. Те же вопросы. – kar

+0

Вы изменили тип ячейки на текст, снова набрали значение и сохранили файл перед импортом? –

+1

Плохо, ты был прав. Я случайно сделал один текст ячейки, а не все ячейки. – kar

Смежные вопросы