Этот пост показывает, как вы можете использовать jXLS для анализа файла Excel в списке JavaBeans.
Вот общий метод утилиты, который я написал для этого:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
/** * Parses an excel file into a list of beans. * * @param <T> the type of the bean * @param xlsFile the excel data file to parse * @param jxlsConfigFile the jxls config file describing how to map rows to beans * @return the list of beans or an empty list there are none * @throws Exception if there is a problem parsing the file */ public static <T> List<T> parseExcelFileToBeans( final File xlsFile, final File jxlsConfigFile) throws Exception { final XLSReader xlsReader = ReaderBuilder.buildFromXML(jxlsConfigFile); final List<T> result = new ArrayList<>(); final Map<String, Object> beans = new HashMap<>(); beans.put( "result" , result); try (InputStream inputStream = new BufferedInputStream( new FileInputStream(xlsFile))) { xlsReader.read(inputStream, beans); } return result; } |
Пример:
Рассмотрим следующий файл Excel, содержащий информацию о человеке:
Имя | Фамилия | Возраст |
Джо | Bloggs | 25 |
Джон | лань | 30 |
Создайте следующий компонент Person
чтобы привязать каждую строку Excel к:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package model; public class Person { private String firstName; private String lastName; private int age; public Person() { } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this .firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this .lastName = lastName; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } } |
Создайте файл конфигурации jXLS, который сообщает jXLS, как обрабатывать файл Excel и сопоставлять строки с объектами Person
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
< workbook > < worksheet name = "Sheet1" > < section startRow = "0" endRow = "0" /> < loop startRow = "1" endRow = "1" items = "result" var = "person" varType = "model.Person" > < section startRow = "1" endRow = "1" > < mapping row = "1" col = "0" >person.firstName</ mapping > < mapping row = "1" col = "1" >person.lastName</ mapping > < mapping row = "1" col = "2" >person.age</ mapping > </ section > < loopbreakcondition > < rowcheck offset = "0" > < cellcheck offset = "0" /> </ rowcheck > </ loopbreakcondition > </ loop > </ worksheet > </ workbook > |
Теперь вы можете разобрать файл Excel в список объектов Person
с помощью одной строки:
1
2
|
List<Person> persons = Utils.parseExcelFileToBeans( new File( "/path/to/personData.xls" ), new File( "/path/to/personConfig.xml" )); |
Похожие сообщения:
Разбор файла CSV в JavaBeans с использованием OpenCSV
Ссылка: | Разбор файла Excel в JavaBeans с использованием jXLS от нашего партнера по JCG Фахда Шарифа в блоге fahd.blog . |