{"id":20048288,"url":"https://github.com/truthbean/excel4j","last_synced_at":"2025-05-05T10:31:32.663Z","repository":{"id":233438584,"uuid":"117685166","full_name":"TruthBean/excel4j","owner":"TruthBean","description":"excel for java","archived":false,"fork":false,"pushed_at":"2020-12-26T12:38:58.000Z","size":536,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T21:35:40.979Z","etag":null,"topics":["excel4j"],"latest_commit_sha":null,"homepage":"http://www.truthbean.com/excel4j/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TruthBean.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-01-16T13:10:20.000Z","updated_at":"2022-03-31T00:40:00.000Z","dependencies_parsed_at":"2024-04-16T07:03:49.993Z","dependency_job_id":"e032bf9f-ca3c-45a3-a195-549262db80b8","html_url":"https://github.com/TruthBean/excel4j","commit_stats":null,"previous_names":["truthbean/excel4j"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthBean%2Fexcel4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthBean%2Fexcel4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthBean%2Fexcel4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthBean%2Fexcel4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TruthBean","download_url":"https://codeload.github.com/TruthBean/excel4j/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252480489,"owners_count":21754781,"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":["excel4j"],"created_at":"2024-11-13T11:42:35.349Z","updated_at":"2025-05-05T10:31:32.264Z","avatar_url":"https://github.com/TruthBean.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# excel4j\r\n\r\nNOTE:\r\nThis project merged into https://github.com/truthbean/truthbean-projects, will not update any more\r\n\r\n### desc\r\n\r\nThis project use gradle build, you can learn from \r\n[https://docs.gradle.org/4.4.1/userguide/userguide.html](https://docs.gradle.org/4.4.1/userguide/userguide.html).\r\n\r\nApache poi is used too, and jxl may used if someone asked, but now is not yet\r\n\r\nAnd kotlin lang should be used too, i like it, you can learn from\r\n[http://kotlinlang.org/docs/reference/](http://kotlinlang.org/docs/reference/).\r\n\r\nAnd ...\r\n\r\n### example\r\n\r\n#### maven\r\n```xml\r\n\u003cdependency\u003e\r\n  \u003cgroupId\u003ecom.truthbean.code\u003c/groupId\u003e\r\n  \u003cartifactId\u003eexcel4j\u003c/artifactId\u003e\r\n  \u003cversion\u003e0.0.2-RELEASE\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\n#### gradle\r\n```groovy\r\ncompile 'com.truthbean.code:excel4j:0.0.2-RELEASE'\r\n```\r\n\r\nUsing annotation\r\n\r\n```java\r\n@Sheet(name = \"测试SHEET\", bigTitle = \"hello excel4j\")\r\npublic class CellEntityTest {\r\n\r\n    @Column(order = 2, name = \"ID\", columnValue = @ColumnValue(\r\n            type = CellValueType.DOUBLE\r\n    ), width = 2864)\r\n    private int id;\r\n\r\n    @Column(name = \"ShortNum\", columnValue = @ColumnValue(type = CellValueType.DOUBLE))\r\n    private long shortNum;\r\n\r\n    @Column(order = 3, name = \"用户名\", width = 9000)\r\n    private String userName;\r\n\r\n    @Column(order = 5, name = \"时间\", columnValue = @ColumnValue(type = CellValueType.DATE))\r\n    private Date time;\r\n\r\n    @Column(order = 4, name = \"金额\", columnValue = @ColumnValue(type = CellValueType.DOUBLE))\r\n    private BigDecimal decimal;\r\n\r\n    private Exception exception;\r\n    \r\n    ...\r\n}\r\n```\r\n\r\n#### java bean export into excel\r\n \r\n eg.\r\n \r\n ```java\r\n    ExcelModel excelModel = ExportHelper.handleData(list, CellEntityTest.class);\r\n    ExportHelper.writeToFile(excelModel, UUID.randomUUID().toString() + \".xlsx\", \"D:\\\\develop\\\\data\\\\applogs\\\\\");\r\n```\r\n more example, please see test class ExportHelperTest.java\r\n \r\n ---\r\n \r\n #### excel to java bean\r\n \r\n eg.\r\n ```java\r\n    File file = new File(\"D:\\\\develop\\\\data\\\\applogs\\\\203a1072-0fac-459d-8713-4e9ea854d993.xlsx\");\r\n    List\u003cCellEntityTest\u003e cellEntityTests = ImportHelper.readDataFromExcel(file, CellEntityTest.class);\r\n```\r\n please see test class ImportHelperTest.java\r\n \r\n ---\r\n \r\n ### custom\r\n \r\n you can custom transform handler, implement CellEntityValueHandler or extend other handler class.\r\n And then you just do this:\r\n ```java\r\n    @Column(order = 2, name = \"ID\", columnValue = @ColumnValue(\r\n            type = CellValueType.DOUBLE, transformHandler = CustomDoubleTransformHandler.class\r\n    ), width = 2864)\r\n    private int id;\r\n```\r\nthis transformHandler is your CustomDoubleTransformHandler\r\n\r\n### attache\r\nthis project is just started, I am glad to see you join。\r\n\r\n### release\r\n##### 0.0.1-RELEASE\r\nfirst version, init project\r\n\r\n##### 0.0.2-RELEASE\r\n1. add cell entity model's super class support\r\neg: \r\n```java\r\n@Sheet(name = \"测试SHEET\", bigTitle = \"hello excel4j\")\r\npublic class CellEntityTest extends CommonEntityTest {\r\n\r\n    @Column(name = \"ShortNum\", columnValue = @ColumnValue(type = CellValueType.NUMBER))\r\n    private long shortNum;\r\n\r\n    @Column(order = 3, name = \"用户名\", width = 9000)\r\n    private String userName;\r\n\r\n    @Column(order = 5, name = \"时间\", columnValue = @ColumnValue(type = CellValueType.DATE))\r\n    private Date time;\r\n\r\n    @Column(order = 4, name = \"金额\", columnValue = @ColumnValue(type = CellValueType.NUMBER,\r\n            transformHandler = BigDecimalTransformHandler.class))\r\n    private BigDecimal decimal;\r\n    \r\n    ...\r\n}\r\n\r\npublic class CommonEntityTest {\r\n\r\n    @Column(order = 2, name = \"ID\", columnValue = @ColumnValue(\r\n            type = CellValueType.DOUBLE, transformHandler = DoubleTransformHandler.class\r\n    ), width = 2864)\r\n    private int id;\r\n    ...\r\n}\r\n```\r\n\r\n2. get cell entity model filed value by invoke getter method\r\n\r\n3. get map data from excel, get model (class) data from excel is not work, next version will handle it \r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftruthbean%2Fexcel4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftruthbean%2Fexcel4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftruthbean%2Fexcel4j/lists"}