{"id":19075861,"url":"https://github.com/braisdom/templatedexcel","last_synced_at":"2026-03-01T23:02:45.021Z","repository":{"id":52539821,"uuid":"183152710","full_name":"braisdom/TemplatedExcel","owner":"braisdom","description":"Defining Excel styles with HTML and CSS. It's a templated language, as same as HTML","archived":false,"fork":false,"pushed_at":"2022-06-29T17:19:58.000Z","size":250,"stargazers_count":14,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-28T17:53:40.758Z","etag":null,"topics":["css","excel","export","html","java","template","xml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/braisdom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-24T05:13:03.000Z","updated_at":"2024-10-29T14:43:15.000Z","dependencies_parsed_at":"2022-09-18T12:02:21.172Z","dependency_job_id":null,"html_url":"https://github.com/braisdom/TemplatedExcel","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/braisdom/TemplatedExcel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braisdom%2FTemplatedExcel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braisdom%2FTemplatedExcel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braisdom%2FTemplatedExcel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braisdom%2FTemplatedExcel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/braisdom","download_url":"https://codeload.github.com/braisdom/TemplatedExcel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braisdom%2FTemplatedExcel/sbom","scorecard":{"id":250840,"data":{"date":"2025-08-11","repo":{"name":"github.com/braisdom/TemplatedExcel","commit":"fca0faaf072587642df20a5f4523e8f44dc827d4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-78wr-2p64-hpwj","Warn: Project is vulnerable to: GHSA-gwrp-pvrq-jmwv","Warn: Project is vulnerable to: GHSA-9jwc-q6j3-8g9g","Warn: Project is vulnerable to: GHSA-6pcc-3rfx-4gpm","Warn: Project is vulnerable to: GHSA-hwj3-m3p6-hj38"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T08:25:56.631Z","repository_id":52539821,"created_at":"2025-08-17T08:25:56.632Z","updated_at":"2025-08-17T08:25:56.632Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","excel","export","html","java","template","xml"],"created_at":"2024-11-09T01:56:15.541Z","updated_at":"2026-03-01T23:02:45.006Z","avatar_url":"https://github.com/braisdom.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TemplatedExcel\nDefining Excel styles with HTML and CSS. It's a templated language, as same as HTML.\n# News and noteworthy\n- V1.1.0 release 2019-10-04\n\t- Adjust the 'autoColumnSize' after the content generated.\n\t- Create the style of cell lazyly.\n- V1.0.1 release 2019-04-28\n\t- 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.\n\t- Interface abstracted for various  Excel adapter\n\n# Template language tags\n|Tag Name |Attribute   |Description   |\n| ------------ | ------------ | ------------ |\n|workbook   |--|The root element   |\n|sheet   |name   |The name of sheet, it will be displayed in Excel   |\n|row   |height   |The height of row   |\n|   |style   |The style of the row will apply to all cells included it    |\n|cell   |fit-content   |Adjusts the column width to fit the contents.    |\n|   |quote-prefixed   |Let numbers appear as non-numeric   |\n|   |colspan   |Allows a single excel cell to span the width of more than one cell or column.   |\n|   |rowspan   |Allows a single excel cell to span the height of more than one cell or row.   |\n|   |style   |The style of cell which describes Excel cell style   ||\n\n# CSS properties supported\n`Not supported by all CSS standards, all color is hex color definition only.`\n- ***background-color***: Hex color definition supported only.  eg: #FFFFFF.\n- ***text-color***: Hex color definition supported only.  eg: #FFFFFF.\n- ***horizontal-alignment***: left, right, center supported only.\n- ***vertical-aligment***: top, bottom, center supported only.\n- ***border***: eg: 1px thin #000000, The border-style supported is thin, medium, dashed, dotted, thick, double and hair only.\n- ***border-top-style***: as same as border.\n- ***border-bottom-style***: as same as border.\n- ***border-left-style***: as same as border.\n- ***border-right-style***: as same as border.\n- ***border-top-color***: as same as border.\n- ***border-bottom-color***: as same as border.\n- ***border-left-color***: as same as border.\n- ***border-right-color***: as same as border.\n- ***font-weight***: bold or others.\n- ***font-family***: eg: Microsoft YaHei, the font name in excel.\n- ***font-size***: eg: 12px, the font size in excel.\n- ***font-style***: italic or others.\n- ***text-decoration***: underline or others.\n# Reference\n[ph-css](https://github.com/phax/ph-css \"ph-css\") For parsing CSS text,[thymeleaf](https://github.com/thymeleaf/thymeleaf \"thymeleaf\") For dynamic template file.\n\n# Quick Start\n## Maven dependency\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.braisdom\u003c/groupId\u003e\n  \u003cartifactId\u003etemplated-excel\u003c/artifactId\u003e\n  \u003cversion\u003e1.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\nTo build TemplatedExcel from source, Maven 3.0.4 is required. Any Maven version below does NOT work!\n\n## Example\nJava Code:\n```java\npublic class Sample {\n\n    public static void main(String[] args) throws Exception {\n        InputStreamReader inputStreamReader = new InputStreamReader(Sample\n                .class.getResourceAsStream(\"/template.xml\"));\n        File excelFile = new File(\"./sample.xls\");\n        WorkbookTemplate workbookTemplate = new WorkbookTemplate(inputStreamReader);\n        workbookTemplate.process(new SampleTemplateDataSource(), new PoiWorkBookWriter(), excelFile);\n    }\n}\n```\nTemplate Code:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cworkbook xmlns:th=\"https://www.braisdom.org/templated-excel\"\u003e\n    \u003csheet name=\"StyleSheet\"\u003e\n        \u003crow height=\"40\"\u003e\n            \u003ccell fit-content=\"true\" quote-prefixed=\"true\"\u003e00000000012344\u003c/cell\u003e\n            \u003ccell fit-content=\"true\" colspan=\"2\" style=\"text-align: center;vertical-align: center;\"\u003e\n                Merged Column, Text Align Center, Vertical Align Center\n            \u003c/cell\u003e\n        \u003c/row\u003e\n        \u003crow\u003e\n            \u003ccell fit-content=\"true\" style=\"color: #FF0000;\"\u003eColor Text\u003c/cell\u003e\n        \u003c/row\u003e\n        \u003crow\u003e\n            \u003ccell fit-content=\"true\"\n                style=\"background-color: #FF0000;color: #FFFFFF;\"\u003eBackground Color\u003c/cell\u003e\n        \u003c/row\u003e\n        \u003crow\u003e\n            \u003ccell fit-content=\"true\" style=\"border:1px thin #FF0000;\"\u003eCell Border\u003c/cell\u003e\n        \u003c/row\u003e\n        \u003crow\u003e\n            \u003ccell style=\"font-style: italic;font-weight: bold;\n                        font-family: Microsoft YaHei;text-decoration: underline;\"\u003e\n                Font Style\n            \u003c/cell\u003e\n        \u003c/row\u003e\n        \u003crow height=\"50\"\u003e\n            \u003ccell fit-content=\"true\" style=\"border:1px thin #FF0000;\"\u003eRow Height\u003c/cell\u003e\n        \u003c/row\u003e\n    \u003c/sheet\u003e\n    \u003csheet name=\"DataTableSheet\"\u003e\n        \u003cdata-table\u003e\n            \u003cheader\u003e\n                \u003crow height=\"30\"\u003e\n                    \u003ccell colspan=\"2\" style=\"font-size: 18;font-weight: bold;\n                            text-align: center;vertical-align: center;\"\u003e\n                        Employee Table\n                    \u003c/cell\u003e\n                \u003c/row\u003e\n                \u003crow\u003e\n                    \u003ccell fit-content=\"true\" style=\"font-weight: bold;\n                            border: 1px thin #000000;\"\u003eName\u003c/cell\u003e\n                    \u003ccell fit-content=\"true\" style=\"font-weight: bold;\n                            border: 1px thin #000000;\"\u003eGender\u003c/cell\u003e\n                    \u003ccell fit-content=\"true\" style=\"font-weight: bold; s\n                            border: 1px thin #000000;\"\u003eOccupation\u003c/cell\u003e\n                \u003c/row\u003e\n            \u003c/header\u003e\n            \u003cbody\u003e\n                \u003crow th:each=\"user : ${users}\"\u003e\n                    \u003ccell fit-content=\"true\" style=\"border: 1px thin #000000;\"\n                          th:text=\"${user.name}\"/\u003e\n                    \u003ccell fit-content=\"true\" style=\"border: 1px thin #000000;\"\n                          th:text=\"${user.gender}\"/\u003e\n                    \u003ccell fit-content=\"true\" style=\"border: 1px thin #000000;\"\n                          th:text=\"${user.occupation}\"/\u003e\n                \u003c/row\u003e\n            \u003c/body\u003e\n        \u003c/data-table\u003e\n    \u003c/sheet\u003e\n\u003c/workbook\u003e\n```\n![](https://raw.githubusercontent.com/braisdom/TemplatedExcel/master/images/style.png)\n![](https://github.com/braisdom/TemplatedExcel/blob/master/images/data-table.png?raw=true)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraisdom%2Ftemplatedexcel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbraisdom%2Ftemplatedexcel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraisdom%2Ftemplatedexcel/lists"}