Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Spring Boot starter with autoconfiguration and impl dependencies for Table Wrapper API

License

Notifications You must be signed in to change notification settings

spacious-team/table-wrapper-spring-boot-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-version spring-boot-version jitpack-last-release Unit tests Coverage

Назначение

Позволяет работать с табличным представлением данных в форматах Excel, Xml и Csv через единый интерфейс Table Wrapper API.

Совместим с проектами Spring Boot 2.7 и выше.

Spring Boot Starter настраивает реализации фабрик ExcelTableFactory, XmlTableFactory, CsvTableFactory и подключает необходимые зависимости

  1. table-wrapper-excel-impl для работы с excel файлами
<dependency>
    <groupId>com.github.spacious-team</groupId>
    <artifactId>table-wrapper-excel-impl</artifactId>
</dependency>
  1. table-wrapper-xml-impl для работы с xml файлами
<dependency>
    <groupId>com.github.spacious-team</groupId>
    <artifactId>table-wrapper-xml-impl</artifactId>
</dependency>
  1. table-wrapper-csv-impl для работы с csv (tsv) файлами
<dependency>
    <groupId>com.github.spacious-team</groupId>
    <artifactId>table-wrapper-csv-impl</artifactId>
</dependency>

Подключение стартера к проекту

Необходимо подключить репозиторий open source библиотек github jitpack, например для Apache Maven проекта

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

Далее добавить зависимость

<dependency>
    <groupId>com.github.spacious-team</groupId>
    <artifactId>table-wrapper-spring-boot-starter</artifactId>
    <version>master-SNAPSHOT</version>
</dependency>

В качестве версии можно использовать:

  • версию релиза на github;
  • паттерн <branch>-SNAPSHOT для сборки зависимости с последнего коммита выбранной ветки;
  • короткий десяти значный номер коммита для сборки зависимости с указанного коммита.

Пример использования

Определяются колонки таблицы:

@lombok.Getter
@lombok.RequiredArgsConstructor
enum TableHeader implements TableHeaderColumn {
    PRODUCT(PatternTableColumn.of("Товар")),
    PRICE(PatternTableColumn.of("Цена"));

    private final TableColumn column;
}

Извлекаем данные из таблицы с указанными колонками вне зависимости от формата файла (excel, xml, csv и др.):

@org.springframework.beans.factory.annotation.Autowired
ReportPageFactory reportPageFactory;

void parse() {
    // Получаем страницу с данными. Используем бин ReportPageFactory для построения абстракции
    ReportPage reportPage = reportPageFactory.create("1.xlsx");
    // ... или reportPageFactory.create("1.xml");
    // ... или reportPageFactory.create("1.csv");

    // Метод найдет ячейку с текстом "Таблица 1",
    // воспринимает следующую за ней строку как заголовок таблицы (который описан через enum TableHeader).
    // Из последующих строк (до пустой строки или конца файла) извлекаются данные
    // (метод использует бин ExcelTableFactory для создания таблицы Table на основе ReportPage) 
    Table table = reportPage.create("Таблица 1", TableHeader.class);

    // Итерируемся по строкам таблицы и извлекаем ячейки из строк по заголовку таблицы
    table.stream()
            .forEach(row -> {
                String product = row.getStringCellValue(TableHeader.PRODUCT);
                BigDecimal price = getBigDecimalCellValue(TableHeader.PRICE);
            });
}