|
| 1 | + |
| 2 | +[](https://github.com/spring-projects/spring-boot/releases) |
| 3 | +[]( |
| 4 | +https://jitpack.io/#spacious-team/table-wrapper-api) |
| 5 | + |
| 6 | +### Назначение |
| 7 | +Позволяет работать с табличным представлением данных в форматах Excel, Xml и Csv через единый интерфейс |
| 8 | +[Table Wrapper API](https://github.com/spacious-team/table-wrapper-api). |
| 9 | + |
| 10 | +Совместим с проектами Spring Boot 2.7 и выше. |
| 11 | + |
| 12 | +Spring Boot Starter настраивает реализации фабрик `ExcelTableFactory`, `XmlTableFactory`, `CsvTableFactory` |
| 13 | +и подключает необходимые зависимости |
| 14 | +1. [table-wrapper-excel-impl](https://github.com/spacious-team/table-wrapper-excel-impl) для работы с excel файлами |
| 15 | +```xml |
| 16 | +<dependency> |
| 17 | + <groupId>com.github.spacious-team</groupId> |
| 18 | + <artifactId>table-wrapper-excel-impl</artifactId> |
| 19 | +</dependency> |
| 20 | +``` |
| 21 | +2. [table-wrapper-xml-impl](https://github.com/spacious-team/table-wrapper-xml-impl) для работы с xml файлами |
| 22 | +```xml |
| 23 | +<dependency> |
| 24 | + <groupId>com.github.spacious-team</groupId> |
| 25 | + <artifactId>table-wrapper-xml-impl</artifactId> |
| 26 | +</dependency> |
| 27 | +``` |
| 28 | +3. [table-wrapper-csv-impl](https://github.com/spacious-team/table-wrapper-csv-impl) для работы с csv (tsv) файлами |
| 29 | +```xml |
| 30 | +<dependency> |
| 31 | + <groupId>com.github.spacious-team</groupId> |
| 32 | + <artifactId>table-wrapper-csv-impl</artifactId> |
| 33 | +</dependency> |
| 34 | +``` |
| 35 | + |
| 36 | +### Подключение стартера к проекту |
| 37 | +Необходимо подключить репозиторий open source библиотек github |
| 38 | +[jitpack](https://jitpack.io/#spacious-team/table-wrapper-spring-boot-starter), например для Apache Maven проекта |
| 39 | +```xml |
| 40 | +<repositories> |
| 41 | + <repository> |
| 42 | + <id>central</id> |
| 43 | + <name>Central Repository</name> |
| 44 | + <url>https://repo.maven.apache.org/maven2</url> |
| 45 | + <snapshots> |
| 46 | + <enabled>false</enabled> |
| 47 | + </snapshots> |
| 48 | + </repository> |
| 49 | + <repository> |
| 50 | + <id>jitpack.io</id> |
| 51 | + <url>https://jitpack.io</url> |
| 52 | + </repository> |
| 53 | +</repositories> |
| 54 | +``` |
| 55 | +Далее добавить зависимость |
| 56 | +```xml |
| 57 | +<dependency> |
| 58 | + <groupId>com.github.spacious-team</groupId> |
| 59 | + <artifactId>table-wrapper-spring-boot-starter</artifactId> |
| 60 | + <version>master-SNAPSHOT</version> |
| 61 | +</dependency> |
| 62 | +``` |
| 63 | + |
| 64 | +В качестве версии можно использовать: |
| 65 | +- версию [релиза](https://github.com/spacious-team/table-wrapper-spring-boot-starter/releases) на github; |
| 66 | +- паттерн `<branch>-SNAPSHOT` для сборки зависимости с последнего коммита выбранной ветки; |
| 67 | +- короткий десяти значный номер коммита для сборки зависимости с указанного коммита. |
| 68 | + |
| 69 | +### Пример использования |
| 70 | +Определяются колонки таблицы вне зависимости от формата файла (excel, xml, csv и др.): |
| 71 | +```java |
| 72 | +@lombok.Getter |
| 73 | +@lombok.RequiredArgsConstructor |
| 74 | +enum TableHeader implements TableHeaderColumn { |
| 75 | + PRODUCT(PatternTableColumn.of("Товар")), |
| 76 | + PRICE(PatternTableColumn.of("Цена")); |
| 77 | + |
| 78 | + private final TableColumn column; |
| 79 | +} |
| 80 | +``` |
| 81 | +Извлекаем данные в описанном формате, например, из Excel файла через Stream API |
| 82 | +```java |
| 83 | +Workbook book = new XSSFWorkbook(xlsFileinputStream); // открываем Excel файл |
| 84 | +ReportPage reportPage = new ExcelSheet(book.getSheetAt(0)); // используем 1-ый лист Excel файла для поиска таблицы |
| 85 | + |
| 86 | +// Регистронезависимо найдет ячейку с текстом "Таблица 1", |
| 87 | +// парсит следующую за ней строку как заголовок таблицы, |
| 88 | +// оставшиеся строки парсятся как данные до пустой строки или конца файла |
| 89 | +Table table = reportPage.create("таблица 1", TableHeader.class); // метод использует бин ExcelTableFactory для создания таблицы |
| 90 | + |
| 91 | +// Извлекаем и обрабатываем строки таблицы |
| 92 | +table.stream() |
| 93 | + .forEach(row -> { |
| 94 | + String product = row.getStringCellValue(TableHeader.PRODUCT); |
| 95 | + BigDecimal price = getBigDecimalCellValue(TableHeader.PRICE); |
| 96 | + }); |
| 97 | +``` |
0 commit comments