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

Попробовал бесплатную JexcelAPI.
Дату определяет в ячейке точно (в отличие от POI), но невсегда выбирает в нужном формате :(
Необхдимо выбрать точно так как показано в ячейке. Как это сделать?
И еще:
Если стоит формат яейки Numreric, но в маске прописаны лидирующие нули (Например 000###),
данные получаю без нулей.
Может кто сталкивался как выбрать именно то что отображает excel в ячейке?
Формат ячейки мне безразличен. Писать в формате xls тоже пока не надо.
...
Рейтинг: 0 / 0
05.04.2007, 06:58:36
    #34439082
Alexey Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POI (Чтение данных из Excel)
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
05.04.2007, 15:32:20
    #34440884
Sslimx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POI (Чтение данных из Excel)
Я так пробовал.

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


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