22[ ![ spring-boot-version] ( https://img.shields.io/badge/spring--boot-2.7+-brightgreen?style=flat-square )] ( https://github.com/spring-projects/spring-boot/releases )
33[ ![ jitpack-last-release] ( https://jitpack.io/v/spacious-team/table-wrapper-spring-boot-starter.svg?style=flat-square )] (
44https://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 )
59
610### Назначение
711Позволяет работать с табличным представлением данных в форматах Excel, Xml и Csv через единый интерфейс
@@ -67,7 +71,7 @@ Spring Boot Starter настраивает реализации фабрик `Ex
6771- короткий десяти значный номер коммита для сборки зависимости с указанного коммита.
6872
6973### Пример использования
70- Определяются колонки таблицы вне зависимости от формата файла (excel, xml, csv и др.) :
74+ Определяются колонки таблицы:
7175``` java
7276@lombok . Getter
7377@lombok . RequiredArgsConstructor
@@ -78,20 +82,28 @@ enum TableHeader implements TableHeaderColumn {
7882 private final TableColumn column;
7983}
8084```
81- Извлекаем данные в описанном формате, например, из Excel файла через Stream API
85+ Извлекаем данные из таблицы с указанными колонками вне зависимости от формата файла (excel, xml, csv и др.):
8286``` 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;
8589
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");
9095
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+ }
97109```
0 commit comments