Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
3 / 3 / 0
Регистрация: 29.11.2013
Сообщений: 89
1

Apache POI, как прочитать *. xlsx 2007

18.05.2014, 19:36. Показов 3913. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу программно прочитать *.xlsx файл созданный в Excel 2007.

Для пробы пера написал код который должен прочитать все ячейки во всех строках первого листа и вывести в консоль их содержимое:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package excel2007_to_massive;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
 
 
 
import java.io.*;
 
public class Excel2007_to_massive {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        FileInputStream tovar =  new FileInputStream("C:\\Users\\iaks\\Desktop\\Разработка приложений и тест\\Список дисков Test.xlsx");
        Workbook diski = new XSSFWorkbook(tovar);
        Sheet list_1 = diski.getSheetAt(0);
        for (Row row:list_1){
            for (Cell cell:row){
                String znach = cell.getCellFormula();
                System.out.print(znach+"|");
                System.out.println();
            }
        }
    }
    
}
Но не тут то было... выдает следующее:

Java
1
2
3
4
5
6
7
8
9
10
11
12
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
    at excel2007_to_massive.Excel2007_to_massive.main(Excel2007_to_massive.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 1 more
Java Result: 1
Может что-то не подключил?

Добавлено через 1 час 27 минут
действительно, не подключил еще несколько библиотек

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2014, 19:36
Ответы с готовыми решениями:

Как подключить Apache POI
я новичок в java, работаю в intellij, нужно написать считку с excel файла, но не могу подключить...

Как подключить библиотеку apache poi к проекту
Возникла потребность вывести массив в файл excel. Почитав немного, понял что самая "адекватная"...

Как установить Apache POI?
Нашла один урок в сети по работе в Java с xls файлами. Но чтобы с ними работать, нужно установить...

Apache POI как получить цвет заливки ячейки в xls?
Доброго дня уважаемые форумчане. Как я ни гнал от себя эту мысль, но все же пришлось начать...

2
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 508
18.05.2014, 23:55 2
должны быть подключены вот такие зависимости:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.10-FINAL</version>
        </dependency>     
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.10-FINAL</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.10-FINAL</version>
        </dependency>
Добавлено через 2 минуты
и использовать надо вот этот класс для данного типа: SXSSFWorkbook
0
-1 / 0 / 1
Регистрация: 25.10.2015
Сообщений: 75
18.03.2016, 23:55 3
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
import java.util.ArrayList;
import java.util.LinkedList;
 
public class Main {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        String fileName = "Местонахождение файла";
            
        Ex xls = new Ex();
        LinkedList<Preke> prekes = xls.nuskaitytiPrekes(fileName, "Prekes");
        spausdinti(prekes);
 
 
public static void spausdinti(LinkedList l) {
     System.out.println("~~~~~~~~~~~");
        System.out.println("PRADINIAI DUOMENYS:");
        System.out.println("~~~~~~~~~~~");
                for(int i=0; i < l.size(); i++) {
            System.out.println(l.get(i));
        }
}

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
 
public class Ex {
  
    public List<List<XSSFCell>> nuskaitytiDuomenis(String xlsFileName, String sheetName) {
        List<List<XSSFCell>> sheetData = new ArrayList<>();
 
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(xlsFileName);
            
            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet sheet = workbook.getSheet(sheetName); //workbook.getSheetAt(4);
            
            Iterator rows = sheet.rowIterator();
            while (rows.hasNext()) {
                XSSFRow row = (XSSFRow) rows.next();
                Iterator cells = row.cellIterator();
 
                List<XSSFCell> data = new ArrayList<>();
                while (cells.hasNext()) {
                    XSSFCell cell = (XSSFCell) cells.next();
                    data.add(cell);
                }
 
                sheetData.add(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
        } catch (IOException e) {
                    e.printStackTrace();
        }
            }
        }
        return sheetData;
    }
    
    public LinkedList<Preke> nuskaitytiPrekes(String xlsFileName, String sheetName) {
        List<List<XSSFCell>> sheetData = nuskaitytiDuomenis(xlsFileName, sheetName);
        LinkedList<Preke> ats = new LinkedList();
        
        for (int i = 1; i < sheetData.size(); i++) { // sukame cikla per eilutes, 0-neje eiluteje antraste
 
            List<XSSFCell> list = (List<XSSFCell>) sheetData.get(i); // nuskaitome i-aja eilute
            
            XSSFCell cellKodas = (XSSFCell) list.get(0); // pasiimame 0-line cele is eilutes
            XSSFCell cellPavadinimas   = (XSSFCell) list.get(1); // pasiimame 1-ma cele is eilutes
            XSSFCell cellSalis = (XSSFCell) list.get(2); // pasiimame 2-ra cele is eilutes
            XSSFCell cellKaina = (XSSFCell) list.get(3); // pasiimame 3-ia cele is eilutes
            
            int kodas = (int) cellKodas.getNumericCellValue();              // pasiimame 0-lines celes reiksme
            String pavadinimas = cellPavadinimas.getRichStringCellValue().getString();      // pasiimame 1-os celes reiksme
            String salis = cellSalis.getRichStringCellValue().getString();  // pasiimame 2-os celes reiksme
            int kaina = (int)cellKaina.getNumericCellValue();               // pasiimame 3-os celes reiksme
            
            
            Preke p = new Preke();
            p.setKodas(kodas);
            p.setPavadinimas(pavadinimas);
            p.setSalis(salis);
            p.setKainaVnt(kaina);
            ats.add(p);
        }
        return ats;
    }
    
    public LinkedList<Sandelys> nuskaitytiSandeli(String xlsFileName, String sheetName) {
        List<List<XSSFCell>> sheetData = nuskaitytiDuomenis(xlsFileName, sheetName);
        LinkedList<Sandelys> ats = new LinkedList();
        
       for (int i = 1; i < sheetData.size(); i++) { // sukame cikla per eilutes, 0-neje eiluteje antraste
 
            List<XSSFCell> list = (List<XSSFCell>) sheetData.get(i); // nuskaitome i-aja eilute
            
            XSSFCell cellInOut   = (XSSFCell) list.get(0); // pasiimame 0-line cele is eilutes
            XSSFCell cellData    = (XSSFCell) list.get(1); // pasiimame 1-ma cele is eilutes
            XSSFCell cellPrKodas = (XSSFCell) list.get(2); // ...
            XSSFCell cellKiekis  = (XSSFCell) list.get(3);
            
            int inOut = (int)cellInOut.getNumericCellValue();            // pasiimame 0-lines celes reiksme
            String data = cellData.getRichStringCellValue().getString();// pasiimame 1-os celes reiksme
            int kodas = (int) cellPrKodas.getNumericCellValue();        // pasiimame 2-os celes reiksme
            int kiekis = (int)cellKiekis.getNumericCellValue();         // pasiimame 3-os celes reiksme
            
            Sandelys s = new Sandelys();
            s.setData(data);
            s.setKiekis(kiekis);
            s.setInOut(inOut);
            s.setPrekesKodas(kodas);
            
            ats.add(s);
        }
        return ats;
    }
}
0
18.03.2016, 23:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 23:55
Помогаю со студенческими работами здесь

Как проверить, пустая ли ячейка в эксель-файле (библиотека apache poi)?
проверить, пустая ли ячейка (А5 например) и если пустая, то записать некоторые данные в строку 5...

Apache poi - добавление новой страницы в существующий файл xlsx
Есть сценарий для тестирования страницы со списком товаров. В течении этого сценария данные с web...

Как обновить файл Excel со многими формулами, без эвалюации, в Apache POI ?
Всем привет! Надо обновить существующий файл Excel со многими формулами. Версия Apache POI 3.16 ...

Apache POI
Хочу заменить слова в ворде программно, перепробовал кучу способов, потратил пол дня, решения так и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru