用于Java中的apache POI的DSL包装器库

时间:2014-03-19 15:55:49

标签: java apache-poi dsl

有没有人知道一个用java编写的好库,为Apache POI提供流畅的包装?

POI case studies page(最后一个条目)上的丑小鸭条目指的是这样的。

3 个答案:

答案 0 :(得分:1)

直接在github上搜索,我找到subtlib

答案 1 :(得分:1)

我一直在寻找能够生成XLSX文件的DSL包装器。 Subtlib POI库只能生成XLS(BIFF)文件。我将Subtlib POI分叉编写XLSX文件:https://github.com/bekoeppel/poi-ooxml

答案 2 :(得分:1)

查看此存储库 nambach/ExcelUtil。支持以声明方式读写Excel文件。

public class Main {
    static final Style HEADER_STYLE = Style
        .builder()
        .fontColorInHex("#ffffff")
        .backgroundColorInHex("#191970")
        .border(BorderSide.FULL)
        .horizontalAlignment(HorizontalAlignment.LEFT)
        .build();

    static final Style OTHER_STYLES...

    static final DataTemplate<Book> BOOK_TEMPLATE = DataTemplate
        .fromClass(Book.class)
        .includeFields("isbn", "title", "author")
        .column(c -> c.title("Category")
                      .transform(book -> book.getCategory().getName()))  // derive new column
        .column(c -> c.field("rating")
                      .conditionalStyle(book -> book.getRating() > 4 ?  // styles with conditions
                                                HIGH_RATE : null))
        .config(cf -> cf.startAtCell("A2")
                        .autoSizeColumns(true)
                        .headerStyle(HEADER_STYLE)
                        .dataStyle(DATA_STYLE)
                        .conditionalRowStyle(book -> book.getTitle() // selective styling
                                        .contains("Harry Potter") ? FAVORITE_ONE : null));

    public static void main(String[] args) {
        List<Book> books = dataSource.fetchData();
        InputStream stream = BOOK_TEMPLATE.writeData(books);

        FileUtil.writeToDisk(".../books.xlsx", stream, true);
    }
}