Defining Excel styles with HTML and CSS. It's a templated language, as same as HTML.
- V1.1.0 release 2019-10-04
- Adjust the 'autoColumnSize' after the content generated.
- Create the style of cell lazyly.
 
- V1.0.1 release 2019-04-28
- Providing the basic capbility for excel generating, includes CSS defined cell style, dynamic template with Java objects which can be a getter method or Hash.
- Interface abstracted for various Excel adapter
 
| Tag Name | Attribute | Description | 
|---|---|---|
| workbook | -- | The root element | 
| sheet | name | The name of sheet, it will be displayed in Excel | 
| row | height | The height of row | 
| style | The style of the row will apply to all cells included it | |
| cell | fit-content | Adjusts the column width to fit the contents. | 
| quote-prefixed | Let numbers appear as non-numeric | |
| colspan | Allows a single excel cell to span the width of more than one cell or column. | |
| rowspan | Allows a single excel cell to span the height of more than one cell or row. | |
| style | The style of cell which describes Excel cell style | 
Not supported by all CSS standards, all color is hex color definition only.
- background-color: Hex color definition supported only. eg: #FFFFFF.
- text-color: Hex color definition supported only. eg: #FFFFFF.
- horizontal-alignment: left, right, center supported only.
- vertical-aligment: top, bottom, center supported only.
- border: eg: 1px thin #000000, The border-style supported is thin, medium, dashed, dotted, thick, double and hair only.
- border-top-style: as same as border.
- border-bottom-style: as same as border.
- border-left-style: as same as border.
- border-right-style: as same as border.
- border-top-color: as same as border.
- border-bottom-color: as same as border.
- border-left-color: as same as border.
- border-right-color: as same as border.
- font-weight: bold or others.
- font-family: eg: Microsoft YaHei, the font name in excel.
- font-size: eg: 12px, the font size in excel.
- font-style: italic or others.
- text-decoration: underline or others.
ph-css For parsing CSS text,thymeleaf For dynamic template file.
<dependency>
  <groupId>com.github.braisdom</groupId>
  <artifactId>templated-excel</artifactId>
  <version>1.1.0</version>
</dependency>To build TemplatedExcel from source, Maven 3.0.4 is required. Any Maven version below does NOT work!
Java Code:
public class Sample {
    public static void main(String[] args) throws Exception {
        InputStreamReader inputStreamReader = new InputStreamReader(Sample
                .class.getResourceAsStream("/template.xml"));
        File excelFile = new File("./sample.xls");
        WorkbookTemplate workbookTemplate = new WorkbookTemplate(inputStreamReader);
        workbookTemplate.process(new SampleTemplateDataSource(), new PoiWorkBookWriter(), excelFile);
    }
}Template Code:
<?xml version="1.0" encoding="UTF-8"?>
<workbook xmlns:th="https://www.braisdom.org/templated-excel">
    <sheet name="StyleSheet">
        <row height="40">
            <cell fit-content="true" quote-prefixed="true">00000000012344</cell>
            <cell fit-content="true" colspan="2" style="text-align: center;vertical-align: center;">
                Merged Column, Text Align Center, Vertical Align Center
            </cell>
        </row>
        <row>
            <cell fit-content="true" style="color: #FF0000;">Color Text</cell>
        </row>
        <row>
            <cell fit-content="true"
                style="background-color: #FF0000;color: #FFFFFF;">Background Color</cell>
        </row>
        <row>
            <cell fit-content="true" style="border:1px thin #FF0000;">Cell Border</cell>
        </row>
        <row>
            <cell style="font-style: italic;font-weight: bold;
                        font-family: Microsoft YaHei;text-decoration: underline;">
                Font Style
            </cell>
        </row>
        <row height="50">
            <cell fit-content="true" style="border:1px thin #FF0000;">Row Height</cell>
        </row>
    </sheet>
    <sheet name="DataTableSheet">
        <data-table>
            <header>
                <row height="30">
                    <cell colspan="2" style="font-size: 18;font-weight: bold;
                            text-align: center;vertical-align: center;">
                        Employee Table
                    </cell>
                </row>
                <row>
                    <cell fit-content="true" style="font-weight: bold;
                            border: 1px thin #000000;">Name</cell>
                    <cell fit-content="true" style="font-weight: bold;
                            border: 1px thin #000000;">Gender</cell>
                    <cell fit-content="true" style="font-weight: bold; s
                            border: 1px thin #000000;">Occupation</cell>
                </row>
            </header>
            <body>
                <row th:each="user : ${users}">
                    <cell fit-content="true" style="border: 1px thin #000000;"
                          th:text="${user.name}"/>
                    <cell fit-content="true" style="border: 1px thin #000000;"
                          th:text="${user.gender}"/>
                    <cell fit-content="true" style="border: 1px thin #000000;"
                          th:text="${user.occupation}"/>
                </row>
            </body>
        </data-table>
    </sheet>
</workbook>
