powered by simpleCommunicator - 2.0.16     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache POI CellType
15 сообщений из 15, страница 1 из 1
Apache POI CellType
    #40135289
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Явой пользуюсь нечасто, поэтому иногда встречаю пробелы в базовых знаниях. Например, в использовании enum.

Задача: вывести тип данных в ячейке не в виде 0, 1, 2, а в виде текстовых констант. Это возможно?

Код: java
1.
for (CellType c : CellType.values()) System.out.println(c);



Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
javac -cp .;poi-3.9.jar -source 7 -target 7 -Xlint:-options Test.java 

Test.java:42: error: cannot find symbol
        for (CellType c : CellType.values()) System.out.println(c);
                          ^
  symbol:   variable CellType
  location: class Test
Test.java:42: error: cannot find symbol
        for (CellType c : CellType.values()) System.out.println(c);
             ^
  symbol:   class CellType
  location: class Test
2 errors



Код: java
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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import java.io.*;

public final class Test{

    public static void main(String[] args)
    {
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("_");
        HSSFRow row = sheet.createRow(0);
        row.setHeightInPoints(40);
        HSSFCellStyle style3 = wb.createCellStyle();
        HSSFFont font = wb.createFont();
        short fontSize = 12;
        font.setFontHeightInPoints(fontSize);
        font.setFontName("Arial");
        style3.setBorderBottom(style3.BORDER_THIN); style3.setBorderLeft(style3.BORDER_THIN); style3.setBorderRight(style3.BORDER_THIN); style3.setBorderTop(style3.BORDER_THIN);
        style3.setVerticalAlignment(style3.VERTICAL_CENTER); style3.setAlignment(style3.ALIGN_RIGHT);
        style3.setFont(font);

        HSSFCell cell = row.createCell(0);
        cell.setCellValue("Test value");
        cell.setCellStyle(style3);
        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 111  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        cell = row.createCell(1);
        double d = 123.05;
        cell.setCellValue(d);

        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 222  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        sheet.autoSizeColumn(0);
        sheet.autoSizeColumn(1);


        System.out.println("Cell(0, 0) type: "  + row.getCell(0).getCellType());
        System.out.println("Cell(0, 1) type: "  + row.getCell(1).getCellType());


        // тема очередного урока: как работать с Enum ?
        for (CellType c : CellType.values()) System.out.println(c);

        //File f = new File(java.lang.System.getProperty("java.io.tmpdir") + "tmp.xls");
        File f = new File("tmp.xls");
        try
        {
          System.out.println("creating file " + f.getAbsoluteFile());
          FileOutputStream fileOut = new FileOutputStream(f.getAbsoluteFile());
          wb.write(fileOut);
          fileOut.close();
          //java.awt.Desktop.getDesktop().open(f);
        }
        catch (Exception e)
        {
          System.out.println("Error creating file: " + e);
        }
    }
}

...
Рейтинг: 0 / 0
Apache POI CellType
    #40135291
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в виде текстовых констант

Имеется в виду вывод вида:

Ячейка 1: NUMERIC
Ячейка 2: STRING
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135293
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс CellType в пакете org.apache.poi.ss.usermodel судя по джавадокам. Дополнительный import должен помочь.
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135300
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak, первое, что проверил.

И писал полный путь до класса.

И заглянул в JAR.

Я так понимаю, проблема в подключенной версии JAR ?
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
                                              arclite:zip:poi-3.9.jar:\org\apache\poi\ss\usermodel
и                          Имя                           │                           Имя                   
..                                                       │PatternFormatting.class                          
charts                                                   │Picture.class                                    
AutoFilter.class                                         │PictureData.class                                
BorderFormatting.class                                   │PrintCellComments.class                          
BorderStyle.class                                        │PrintOrientation.class                           
BuiltinFormats.class                                     │PrintSetup.class                                 
Cell.class                                               │RichTextString.class                             
CellRange.class                                          │Row.class                                        
CellStyle.class                                          │Row$1.class                                      
CellValue.class                                          │Row$MissingCellPolicy.class                      
Chart.class                                              │ShapeTypes.class                                 
ClientAnchor.class                                       │Sheet.class                                      
Color.class                                              │SheetConditionalFormatting.class                 
Comment.class                                            │Textbox.class                                    
ComparisonOperator.class                                 │VerticalAlignment.class                          
ConditionalFormatting.class                              │Workbook.class                                   
ConditionalFormattingRule.class                          │                                                 



В доке написано:

>>> Since: POI 3.15 beta 3
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135301
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получив такое, решил, что не понимаю понятие ENUM, что для него не получается отдельный файл .class, и решил написать на форум.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
C:\_work\java_test>javac -cp .;poi-3.9.jar -source 7 -target 7 -Xlint:-options Test.java
Test.java:42: error: cannot find symbol
        for (org.apache.poi.ss.usermodel.CellType c : CellType.values()) System.out.println(c);
                                                      ^
  symbol:   variable CellType
  location: class Test
Test.java:42: error: cannot find symbol
        for (org.apache.poi.ss.usermodel.CellType c : CellType.values()) System.out.println(c);
                                        ^
  symbol:   class CellType
  location: package org.apache.poi.ss.usermodel
2 errors
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135302
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, похоже на очень старую версию POI. Зачем вообще версия 3, когда на дворе версия 5? Тем более 3.9, когда CellType появился с 3.15.

Enum - тоже класс, и для него должен быть соответствующий файл *.class.
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135303
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем более 3.9, когда CellType появился с 3.15.

Вот оно, с нумерацией проблема, ошибочно решил, что 3.9 > 3.15.

Спасибо.

Использование старых версий обусловлено тем, что приложение, для которого пишу код, работает в 7-й (1.7) версии Java, и для 8-й и старше не планируется развитие.

Как понять по журналу разработчика , какая минимальная версия JVM нужна для работы, например, версии Apache POI 4.1.x ?
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135304
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm

Как понять по журналу разработчика , какая минимальная версия JVM нужна для работы, например, версии Apache POI 4.1.x ?


Если верно понимаю, для POI 4.x нужна Java 9+.

А для Java 7+ какая версия POI подходит?
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135305
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по https://poi.apache.org/devel/index.html с Java 1.7 можно жить только до POI 3 включительно.
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135306
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3.17

Код: java
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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.ss.usermodel.*;
import java.io.*;

public final class Test{

    public static void main(String[] args)
    {
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("_");
        HSSFRow row = sheet.createRow(0);
        row.setHeightInPoints(40);
        HSSFCellStyle style3 = wb.createCellStyle();
        HSSFFont font = wb.createFont();
        short fontSize = 12;
        font.setFontHeightInPoints(fontSize);
        font.setFontName("Arial");
        //style3.setBorderBottom(style3.BORDER_THIN); style3.setBorderLeft(style3.BORDER_THIN); style3.setBorderRight(style3.BORDER_THIN); style3.setBorderTop(style3.BORDER_THIN);
        //style3.setVerticalAlignment(style3.VERTICAL_CENTER); style3.setAlignment(style3.ALIGN_RIGHT);
        //style3.setFont(font);

        HSSFCell cell = row.createCell(0);
        cell.setCellValue("Test value");
        //cell.setCellStyle(style3);
        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 111  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        cell = row.createCell(1);
        double d = 123.05;
        cell.setCellValue(d);

        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 222  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        sheet.autoSizeColumn(0);
        sheet.autoSizeColumn(1);


        System.out.println("Cell(0, 0) type: "  + row.getCell(0).getCellType());
        System.out.println("Cell(0, 1) type: "  + row.getCell(1).getCellType());


        // тема очередного урока: как работать с Enum ?
        for (CellType c : CellType.values()) System.out.println(c);

        //File f = new File(java.lang.System.getProperty("java.io.tmpdir") + "tmp.xls");
        File f = new File("tmp.xls");
        try
        {
          System.out.println("creating file " + f.getAbsoluteFile());
          FileOutputStream fileOut = new FileOutputStream(f.getAbsoluteFile());
          wb.write(fileOut);
          fileOut.close();
          //java.awt.Desktop.getDesktop().open(f);
        }
        catch (Exception e)
        {
          System.out.println("Error creating file: " + e);
        }
    }
}



Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
C:\_work\java_test>javac -cp .;poi-3.17.jar -source 7 -target 7 -Xlint:-options Test.java
Note: Test.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

C:\_work\java_test>java -cp .;poi-3.9.jar Test
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
        at Test.main(Test.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135307
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по https://poi.apache.org/devel/index.html с Java 1.7 можно жить только до POI 3 включительно.

Еще раз спасибо.
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135308
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, после 3.9 пошли значительные изменения, надо будет про них почитать в JavaDoc.

Код: java
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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
//import org.apache.poi.hssf.usermodel.*;
//import org.apache.poi.hssf.util.*;
import org.apache.poi.ss.usermodel.*;
import java.io.*;

public final class Test{

    public static void main(String[] args)
    {
        Workbook wb = new Workbook();
        Sheet sheet = wb.createSheet("_");
        Row row = sheet.createRow(0);
        row.setHeightInPoints(40);
        CellStyle style3 = wb.createCellStyle();
        Font font = wb.createFont();
        short fontSize = 12;
        font.setFontHeightInPoints(fontSize);
        font.setFontName("Arial");
        //style3.setBorderBottom(style3.BORDER_THIN); style3.setBorderLeft(style3.BORDER_THIN); style3.setBorderRight(style3.BORDER_THIN); style3.setBorderTop(style3.BORDER_THIN);
        //style3.setVerticalAlignment(style3.VERTICAL_CENTER); style3.setAlignment(style3.ALIGN_RIGHT);
        //style3.setFont(font);

        Cell cell = row.createCell(0);
        cell.setCellValue("Test value");
        //cell.setCellStyle(style3);
        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 111  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        cell = row.createCell(1);
        double d = 123.05;
        cell.setCellValue(d);

        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 222  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        sheet.autoSizeColumn(0);
        sheet.autoSizeColumn(1);


        System.out.println("Cell(0, 0) type: "  + row.getCell(0).getCellType());
        System.out.println("Cell(0, 1) type: "  + row.getCell(1).getCellType());


        // тема очередного урока: как работать с Enum ?
        for (CellType c : CellType.values()) System.out.println(c);

        //File f = new File(java.lang.System.getProperty("java.io.tmpdir") + "tmp.xls");
        File f = new File("tmp.xls");
        try
        {
          System.out.println("creating file " + f.getAbsoluteFile());
          FileOutputStream fileOut = new FileOutputStream(f.getAbsoluteFile());
          wb.write(fileOut);
          fileOut.close();
          //java.awt.Desktop.getDesktop().open(f);
        }
        catch (Exception e)
        {
          System.out.println("Error creating file: " + e);
        }
    }
}




Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
C:\_work\java_test>javac -cp .;poi-3.17.jar -source 7 -target 7 Test.java
warning: [options] bootstrap class path not set in conjunction with -source 7
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Test.java:10: error: Workbook is abstract; cannot be instantiated
        Workbook wb = new Workbook();
                      ^
Note: Test.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
4 warnings
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135309
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.ss.usermodel.*;
import java.io.*;

public final class Test{

    public static void main(String[] args)
    {
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("_");
        HSSFRow row = sheet.createRow(0);
        row.setHeightInPoints(40);
        //HSSFCellStyle style3 = wb.createCellStyle();
        HSSFFont font = wb.createFont();
        short fontSize = 12;
        font.setFontHeightInPoints(fontSize);
        font.setFontName("Arial");
        //style3.setBorderBottom(style3.BORDER_THIN); style3.setBorderLeft(style3.BORDER_THIN); style3.setBorderRight(style3.BORDER_THIN); style3.setBorderTop(style3.BORDER_THIN);
        //style3.setVerticalAlignment(style3.VERTICAL_CENTER); style3.setAlignment(style3.ALIGN_RIGHT);
        //style3.setFont(font);

        HSSFCell cell = row.createCell(0);
        cell.setCellValue("Test value");
        //cell.setCellStyle(style3);
        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 111  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        cell = row.createCell(1);
        double d = 123.05;
        cell.setCellValue(d);

        try { cell.setCellType(cell.CELL_TYPE_NUMERIC); }  catch (Exception e) { System.out.println("--- 222  --- Cell number ??? in row " + (cell.getRowIndex() + 1) + ": " + e); }

        sheet.autoSizeColumn(0);
        sheet.autoSizeColumn(1);


        System.out.println("Cell(0, 0) type: "  + row.getCell(0).getCellType());
        System.out.println("Cell(0, 1) type: "  + row.getCell(1).getCellType());


        // тема очередного урока: как работать с Enum ?
        for (CellType c : CellType.values()) System.out.println(c);

        //File f = new File(java.lang.System.getProperty("java.io.tmpdir") + "tmp.xls");
        File f = new File("tmp.xls");
        try
        {
          System.out.println("creating file " + f.getAbsoluteFile());
          FileOutputStream fileOut = new FileOutputStream(f.getAbsoluteFile());
          wb.write(fileOut);
          fileOut.close();
          //java.awt.Desktop.getDesktop().open(f);
        }
        catch (Exception e)
        {
          System.out.println("Error creating file: " + e);
        }
    }
}

C:\_work\java_test>javac -cp .;poi-3.17.jar -source 7 -target 7 Test.java
warning: [options] bootstrap class path not set in conjunction with -source 7
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: Test.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
4 warnings

C:\_work\java_test>java -cp .;poi-3.9.jar Test
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
        at Test.main(Test.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more


На сегодня хватит.
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135310
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да. Для компиляции указывать 3.17, для исполнении - 3.9.

Похоже, что действительно на сегодня уже хватит.
...
Рейтинг: 0 / 0
Apache POI CellType
    #40135314
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
C:\_work\java_test>java -cp .;poi-3.17.jar Test
--- 111  --- Cell number ??? in row 1: java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell
Cell(0, 0) type: 1
Cell(0, 1) type: 0
_NONE
NUMERIC
STRING
FORMULA
BLANK
BOOLEAN
ERROR
creating file C:\_work\java_test\tmp.xls
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache POI CellType
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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