2
2
[ ![ spring-boot-version] ( https://img.shields.io/badge/spring--boot-2.7+-brightgreen?style=flat-square )] ( https://github.com/spring-projects/spring-boot/releases )
3
3
[ ![ jitpack-last-release] ( https://jitpack.io/v/spacious-team/table-wrapper-spring-boot-starter.svg?style=flat-square )] (
4
4
https://jitpack.io/#spacious-team/table-wrapper-api )
5
+ [ ![ Unit tests] ( https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fspacious-team%2Ftable-wrapper-spring-boot-starter%2Fbadge%3Fref%3Ddevelop&style=flat-square&label=Test&logo=none )] (
6
+ https://github.com/spacious-team/table-wrapper-spring-boot-starter/actions/workflows/unit-tests.yml )
7
+ [ ![ Coverage] ( https://img.shields.io/codecov/c/github/spacious-team/table-wrapper-spring-boot-starter/develop?label=Coverage&style=flat-square&token=kqEvgEiKnQ )] (
8
+ https://codecov.io/gh/spacious-team/table-wrapper-spring-boot-starter )
5
9
6
10
### Назначение
7
11
Позволяет работать с табличным представлением данных в форматах Excel, Xml и Csv через единый интерфейс
@@ -67,7 +71,7 @@ Spring Boot Starter настраивает реализации фабрик `Ex
67
71
- короткий десяти значный номер коммита для сборки зависимости с указанного коммита.
68
72
69
73
### Пример использования
70
- Определяются колонки таблицы вне зависимости от формата файла (excel, xml, csv и др.) :
74
+ Определяются колонки таблицы:
71
75
``` java
72
76
@lombok . Getter
73
77
@lombok . RequiredArgsConstructor
@@ -78,20 +82,28 @@ enum TableHeader implements TableHeaderColumn {
78
82
private final TableColumn column;
79
83
}
80
84
```
81
- Извлекаем данные в описанном формате, например, из Excel файла через Stream API
85
+ Извлекаем данные из таблицы с указанными колонками вне зависимости от формата файла (excel, xml, csv и др.):
82
86
``` java
83
- Workbook book = new XSSFWorkbook (xlsFileinputStream); // открываем Excel файл
84
- ReportPage reportPage = new ExcelSheet (book . getSheetAt( 0 )); // используем 1-ый лист Excel файла для поиска таблицы
87
+ @org . springframework.beans.factory.annotation . Autowired
88
+ ReportPageFactory reportPageFactory;
85
89
86
- // Регистронезависимо найдет ячейку с текстом "Таблица 1",
87
- // парсит следующую за ней строку как заголовок таблицы,
88
- // оставшиеся строки парсятся как данные до пустой строки или конца файла
89
- Table table = reportPage. create(" таблица 1" , TableHeader . class); // метод использует бин ExcelTableFactory для создания таблицы
90
+ void parse() {
91
+ // Получаем страницу с данными. Используем бин ReportPageFactory для построения абстракции
92
+ ReportPage reportPage = reportPageFactory. create(" 1.xlsx" );
93
+ // ... или reportPageFactory.create("1.xml");
94
+ // ... или reportPageFactory.create("1.csv");
90
95
91
- // Извлекаем и обрабатываем строки таблицы
92
- table. stream()
93
- .forEach(row - > {
94
- String product = row. getStringCellValue(TableHeader . PRODUCT );
95
- BigDecimal price = getBigDecimalCellValue(TableHeader . PRICE );
96
- });
96
+ // Метод найдет ячейку с текстом "Таблица 1",
97
+ // воспринимает следующую за ней строку как заголовок таблицы (который описан через enum TableHeader).
98
+ // Из последующих строк (до пустой строки или конца файла) извлекаются данные
99
+ // (метод использует бин ExcelTableFactory для создания таблицы Table на основе ReportPage)
100
+ Table table = reportPage. create(" Таблица 1" , TableHeader . class);
101
+
102
+ // Итерируемся по строкам таблицы и извлекаем ячейки из строк по заголовку таблицы
103
+ table. stream()
104
+ .forEach(row - > {
105
+ String product = row. getStringCellValue(TableHeader . PRODUCT );
106
+ BigDecimal price = getBigDecimalCellValue(TableHeader . PRICE );
107
+ });
108
+ }
97
109
```
0 commit comments