Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache POI CellType / 15 сообщений из 15, страница 1 из 1
19.02.2022, 18:49
    #40135289
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Добрый день.

Явой пользуюсь нечасто, поэтому иногда встречаю пробелы в базовых знаниях. Например, в использовании 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
19.02.2022, 18:55
    #40135291
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
в виде текстовых констант

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

Ячейка 1: NUMERIC
Ячейка 2: STRING
...
Рейтинг: 0 / 0
19.02.2022, 19:47
    #40135293
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Класс CellType в пакете org.apache.poi.ss.usermodel судя по джавадокам. Дополнительный import должен помочь.
...
Рейтинг: 0 / 0
19.02.2022, 20:42
    #40135300
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
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
19.02.2022, 20:47
    #40135301
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Получив такое, решил, что не понимаю понятие 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
19.02.2022, 20:57
    #40135302
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Да, похоже на очень старую версию POI. Зачем вообще версия 3, когда на дворе версия 5? Тем более 3.9, когда CellType появился с 3.15.

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

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

Спасибо.

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

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

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


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

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

Еще раз спасибо.
...
Рейтинг: 0 / 0
19.02.2022, 21:30
    #40135308
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Видимо, после 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
19.02.2022, 21:38
    #40135309
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Код: 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
19.02.2022, 21:43
    #40135310
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Ну да. Для компиляции указывать 3.17, для исполнении - 3.9.

Похоже, что действительно на сегодня уже хватит.
...
Рейтинг: 0 / 0
19.02.2022, 21:52
    #40135314
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache POI CellType
Код: 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
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache POI CellType / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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