{"id":21148830,"url":"https://github.com/zhangyu836/xltpl4java","last_synced_at":"2025-03-14T14:14:03.498Z","repository":{"id":57735440,"uuid":"437804399","full_name":"zhangyu836/xltpl4java","owner":"zhangyu836","description":"A Java library to generate xls/x files from a xls/x template.","archived":false,"fork":false,"pushed_at":"2021-12-31T13:27:06.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-21T07:43:55.011Z","etag":null,"topics":["excel","java","jinjava","poi","spreadsheet","spreadsheet-manipulation","template","workbook","worksheet","xls","xlsx"],"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/zhangyu836.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":"2021-12-13T09:07:07.000Z","updated_at":"2021-12-31T13:27:08.000Z","dependencies_parsed_at":"2022-08-23T20:30:31.188Z","dependency_job_id":null,"html_url":"https://github.com/zhangyu836/xltpl4java","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangyu836%2Fxltpl4java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangyu836%2Fxltpl4java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangyu836%2Fxltpl4java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangyu836%2Fxltpl4java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhangyu836","download_url":"https://codeload.github.com/zhangyu836/xltpl4java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243589333,"owners_count":20315471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["excel","java","jinjava","poi","spreadsheet","spreadsheet-manipulation","template","workbook","worksheet","xls","xlsx"],"created_at":"2024-11-20T09:29:18.044Z","updated_at":"2025-03-14T14:14:03.460Z","avatar_url":"https://github.com/zhangyu836.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\r\n# xltpl  \r\n使用 xls/x 文件作为模板来生成 xls/x 文件。 [English](README_EN.md)     \r\n\r\n \r\n## 获取\r\n\r\n```xml\r\n\u003cdependency\u003e\r\n    \u003cgroupId\u003eio.github.zhangyu836\u003c/groupId\u003e\r\n    \u003cartifactId\u003exltpl\u003c/artifactId\u003e\r\n    \u003cversion\u003e0.4.0\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\n## 使用\r\n\r\n*   要使用 xltpl，需要了解 [jinja2 模板的语法](http://docs.jinkan.org/docs/jinja2/templates.html) 。  \r\n*   选择一个 xls/x 文件作为模板。  \r\n*   在单元格中插入变量： \r\n```jinja2\r\n{{name}}\r\n```  \r\n\r\n*   在单元格中插入控制语句：\r\n\r\n```jinja2\r\n{%- for row in rows %}\r\n{% set outer_loop = loop %}{% for row in rows %}\r\nCell\r\n{{outer_loop.index}}{{loop.index}}\r\n{%+ endfor%}{%+ endfor%}\r\n```\r\n\r\n* Java code\r\n```java\r\nimport io.github.zhangyu836.xltpl.BookWriter;\r\n```\r\n\r\n```java\r\nBookWriter bookWriter = new BookWriter();\r\nbookWriter.load(fileName);\r\nMap\u003cString, Object\u003e context = new HashMap\u003c\u003e();\r\ncontext.put(\"name\", \"Hello Wizard\");\r\ncontext.put(\"address\", \"Somewhere over the rainbow\");\r\ncontext.put(\"date\", new Date());\r\ncontext.put(\"items\", items);\r\nbookWriter.renderSheet(context);\r\nbookWriter.save(outFileName);\r\n```\r\n\r\n\u003e 参见 [示例](https://github.com/zhangyu836/xltpl4java/tree/main/example/src/main/java) 。\r\n\r\n## 实现方法\r\n\r\nxls/x 文件的每个工作表会被转换为一棵树。  \r\n树会被转换为带有自定义 tag 的 jinja2 模板。  \r\n渲染模板时，自定义 tag 所对应的 jinja2 扩展调用相应的树节点来写入 xls/x 文件。\r\n\r\n\r\n## 相关\r\n* [xtpl for python](https://github.com/zhangyu836/xltpl)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangyu836%2Fxltpl4java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhangyu836%2Fxltpl4java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangyu836%2Fxltpl4java/lists"}