{"id":13707945,"url":"https://github.com/feng-haitao/auto-excel","last_synced_at":"2026-01-14T01:57:42.288Z","repository":{"id":45264379,"uuid":"289650997","full_name":"feng-haitao/auto-excel","owner":"feng-haitao","description":"A fast import and export tool for Excel.","archived":false,"fork":false,"pushed_at":"2024-03-20T16:09:03.000Z","size":189,"stargazers_count":179,"open_issues_count":2,"forks_count":38,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-07-13T06:30:07.976Z","etag":null,"topics":["excel-export","excel-import","java","poi"],"latest_commit_sha":null,"homepage":"http://www.fenghaitao.net","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/feng-haitao.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,"publiccode":null,"codemeta":null}},"created_at":"2020-08-23T09:04:04.000Z","updated_at":"2025-05-07T02:22:25.000Z","dependencies_parsed_at":"2024-11-13T16:48:10.787Z","dependency_job_id":null,"html_url":"https://github.com/feng-haitao/auto-excel","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/feng-haitao/auto-excel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feng-haitao%2Fauto-excel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feng-haitao%2Fauto-excel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feng-haitao%2Fauto-excel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feng-haitao%2Fauto-excel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feng-haitao","download_url":"https://codeload.github.com/feng-haitao/auto-excel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feng-haitao%2Fauto-excel/sbom","scorecard":{"id":396724,"data":{"date":"2025-08-11","repo":{"name":"github.com/feng-haitao/auto-excel","commit":"d895114e84eda1ae357d6d0cad4fe0c09ffdfb9d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"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":"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":"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":"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":"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":"Code-Review","score":0,"reason":"Found 0/27 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":"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":"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":"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: MIT License: 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":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-4g9r-vxhx-9pgx","Warn: Project is vulnerable to: GHSA-7hfm-57qf-j43q","Warn: Project is vulnerable to: GHSA-crv7-7245-f45f","Warn: Project is vulnerable to: GHSA-mc84-pj99-q6hh","Warn: Project is vulnerable to: GHSA-xqfj-vm6h-2x34","Warn: Project is vulnerable to: GHSA-gmg8-593g-7mv3"],"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-18T19:11:35.692Z","repository_id":45264379,"created_at":"2025-08-18T19:11:35.692Z","updated_at":"2025-08-18T19:11:35.692Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"ssl_error","status_checked_at":"2026-01-14T01:40:32.775Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["excel-export","excel-import","java","poi"],"created_at":"2024-08-02T22:01:50.195Z","updated_at":"2026-01-14T01:57:42.283Z","avatar_url":"https://github.com/feng-haitao.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"[中文](https://github.com/feng-haitao/auto-excel/blob/master/README.zh.md) | English | [Documentation](https://www.codeproject.com/Articles/5280754/autoexcel-user-manual-en)\n\n## Why AutoExcel?\n\nExcel import and export is very common in software development, as long as you are a programmer, you have met. I believe that many people will choose to use Apache POI to complete this work like me. While feeling the power of POI, my team also encountered the following problems:\n\n1. Directly use POI to operate Excel will generate a lot of hard code, you will hardly write row index and column index in the code.\n2. A large number of non-reusable format control codes, such as background color, alignment, cell style, etc.\n3. The implementation consultant clearly provided a ready-made template, but had to develop the code to implement it again, resulting in low development efficiency.\n4. Development resources have to be used when the template is adjusted.\n5. Simple export also requires specific code.\n\n**AutoExcel** solves the above problems. It is very simple and only requires a small amount of code to complete complex import and export. When using it, programmers have no sense of import and export, that is, there is no need to directly manipulate POI. At the same time, the implementation consultant provides Excel is the import and export template, unless new data sources or fields are added, the template update does not need to use development resources.\n\n**AutoExcel** does not over-encapsulate the POI, but makes full use of Excel's own feature-the name manager, through some tricks, the cell and the data source are mapped, thereby decoupling the programmer and the POI, and avoid hard code, so that import and export work becomes enjoyable and no longer boring.\n\n## Features\n\n- Export with template\n  - Support multiple sheets\n  - Support basic object and table data\n  - A single sheet supports multiple data sources of variable length\n  - Support horizontal filling of data\n  - Automatically apply cell style\n  - Auto fill in line number\n  - Auto fill formula\n  - Automatic summary\n- Export directly\n  - Support multiple sheets\n  - Export with basic style\n  - Automatically adjust column width\n- Import\n  - Support multiple sheets\n  - Automatic data type conversion\n- Support millions of data import and export in seconds\n\n## Function preview\n\n| Before export                                                | After export                                                 |\n| :----------------------------------------------------------- | ------------------------------------------------------------ |\n| ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/29357fb6c1c84314a853ed12c8fa7485~tplv-k3u1fbpfcp-watermark.awebp) | ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a59aefe1e71d4705a2553d49587dd844~tplv-k3u1fbpfcp-watermark.awebp) |\n| ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e81c914559ea4a27bd9794a04ddf9752~tplv-k3u1fbpfcp-watermark.awebp) | ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3bc1f19f3d4f4235825a2b01d1d3556b~tplv-k3u1fbpfcp-watermark.awebp) |\n| ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d394bb94a9dd4516ab14807104b1946a~tplv-k3u1fbpfcp-watermark.awebp) | ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/37ac74c7412848f3a2693bb4c79e1e1a~tplv-k3u1fbpfcp-watermark.awebp) |\n| ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5a11e5c3bfde458b9f25f289bac7e524~tplv-k3u1fbpfcp-watermark.awebp) | ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5954247371054e20ba0e0c38003e3765~tplv-k3u1fbpfcp-watermark.awebp) |\n\nTo achieve all of the above exports, you only need to write the following small amount of code (you need additional code to prepare the data source, for example, from the database. In the following example, use `DataGenerator` to generate demo data)\n\n```java\n// Set export parameters, such as data source name, data source, etc.\nList\u003cTemplateExportPara\u003e paras = new ArrayList\u003c\u003e();\nparas.add(new TemplateExportPara(\"BusinessUnit\", DataGenerator.genBusinessUnit()));\nparas.add(new TemplateExportPara(\"Contract\", DataGenerator.genContracts()));\nparas.add(new TemplateExportPara(\"Project\", DataGenerator.genProjects(1)));\n\nList\u003cProduct\u003e products = DataGenerator.genProducts(1);\nTemplateExportPara para3 = new TemplateExportPara(\"Product\", products);\n// When a single sheet has multiple data sources, the data source above should be set to inserted\npara3.setInserted(true);\nparas.add(para3);\n\nTemplateExportPara para5 = new TemplateExportPara(\"Product2\", products);\n// Horizontal fill\npara5.setDataDirection(DataDirection.Right);\nparas.add(para5);\n\n// (Optional operation) Remove unnecessary sheets\nExcelSetting excelSetting = new ExcelSetting();\nexcelSetting.setRemovedSheets(Arrays.asList(\"will be removed\"));\n\nAutoExcel.save(this.getClass().getResource(\"/template/Export.xlsx\").getPath(),\n               this.getClass().getResource(\"/\").getPath() + \"AutoExcel.xlsx\",\n               paras,\n               excelSetting);\n```\n\n## Million data test\n\nUnit: ms\n|                          | 10W rows and 10 columns of data | 100W rows and 10 columns of data |\n| ------------------------ | ------------------------------- | -------------------------------- |\n| Export with template     | 6,258                           | 23,540                           |\n| Export directly          | 5,711                           | 24,952                           |\n| Import                   | 4,466                           | 21,595                           |\n| Import + Type conversion | 4,823                           | 26,279                           |\n\n## Maven\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003enet.fenghaitao\u003c/groupId\u003e\n  \u003cartifactId\u003eauto-excel\u003c/artifactId\u003e\n  \u003cversion\u003e2.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\nFor more functions, please go to [Documentation](https://www.codeproject.com/Articles/5280754/autoexcel-user-manual-en).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeng-haitao%2Fauto-excel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeng-haitao%2Fauto-excel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeng-haitao%2Fauto-excel/lists"}