powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / POI (Чтение данных из Excel)
4 сообщений из 4, страница 1 из 1
POI (Чтение данных из Excel)
    #34433928
Sslimx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Необходимо прочитать данные из книги Excel.
Поробовал POI - вроде все понятно и просто, но столкнулся с проблеммой и поиск по форуму ничего не дал.
Если ячейка типа Техт то все ОК забираю значение cell.getStringCellValue().
А вот если Numeric or Date то проблеммы.
В этих ячейках возвращается тип cell.CELL_TYPE_NUMERIC и непонятно дата это или число.
К тому-же cell.getNumericCellValue() возвращает double и как определить что было в ячейке 123 или 123,0 ???
В общем вопрос в следующем: как вычитать дату если это действительно дата в ячейке?
И как вычитать именно то число что было в ячейке, а не преобразованное в double?
...
Рейтинг: 0 / 0
POI (Чтение данных из Excel)
    #34438948
Sslimx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поиск подсказал еще несколько библиотек для работы с Excel.

Попробовал бесплатную JexcelAPI.
Дату определяет в ячейке точно (в отличие от POI), но невсегда выбирает в нужном формате :(
Необхдимо выбрать точно так как показано в ячейке. Как это сделать?
И еще:
Если стоит формат яейки Numreric, но в маске прописаны лидирующие нули (Например 000###),
данные получаю без нулей.
Может кто сталкивался как выбрать именно то что отображает excel в ячейке?
Формат ячейки мне безразличен. Писать в формате xls тоже пока не надо.
...
Рейтинг: 0 / 0
POI (Чтение данных из Excel)
    #34439082
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SslimxДобрый день.
Необходимо прочитать данные из книги Excel.
Поробовал POI - вроде все понятно и просто, но столкнулся с проблеммой и поиск по форуму ничего не дал.
В общем вопрос в следующем: как вычитать дату если это действительно дата в ячейке?
И как вычитать именно то число что было в ячейке, а не преобразованное в double?

Я делаю в POI вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
 // две константы позволяющее определить что ячейка содержит дату
  private   static   final   short  FIRST_DATE_FORMAT = 0xe;
  private   static   final   short  LAST_DATE_FORMAT = 0x11;

....

 /**
  * Получить значение ячейки в указаной строке в указанной ячейке.
  * 
  * @param row
  * @param cellIndex
  * @return
  */
  public  Object getCellValue(HSSFRow row,  short  cellIndex)
 {
   if  (row ==  null )
    throw   new  IllegalArgumentException("Передана пустая (null) строка!");

  HSSFCell cell = row.getCell(cellIndex);

   if  (cell !=  null )
  {
    switch  (cell.getCellType())
   {
     case  HSSFCell.CELL_TYPE_STRING:
      return  (cell.getStringCellValue());

     case  HSSFCell.CELL_TYPE_NUMERIC:
    {
      short  cdf = cell.getCellStyle().getDataFormat();
      if  ((cdf >= FIRST_DATE_FORMAT) && (cdf <= LAST_DATE_FORMAT))
     {
       return  ( new  java.sql.Date(cell.getDateCellValue().getTime()));
     }

      return  ( new  BigDecimal(String.valueOf(cell.getNumericCellValue())));
    }

     case  HSSFCell.CELL_TYPE_BOOLEAN:
      return  ( Boolean .valueOf(cell.getBooleanCellValue()));

     default :
      return  ( null );
   }
  }

   return  ( null );
 }

...
Рейтинг: 0 / 0
POI (Чтение данных из Excel)
    #34440884
Sslimx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так пробовал.

Но
Код: plaintext
cell.getCellStyle().getDataFormat();
даже если в ячейке находится дата иногда возвращает что то типа 0xA7 а то и больше :(
И еще если даже находит дату, то формат ее неверный :(
Преобразовав по формату дату в строку значение отличается от того как это выглядит в ячейке Excel.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / POI (Чтение данных из Excel)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]