{"id":25438396,"url":"https://github.com/fast-excel/fastexcel","last_synced_at":"2025-05-13T20:15:18.365Z","repository":{"id":261002878,"uuid":"868065564","full_name":"fast-excel/fastexcel","owner":"fast-excel","description":"easyexcel作者最新升级版本， 快速、简洁、解决大文件内存溢出的java处理Excel工具","archived":false,"fork":false,"pushed_at":"2025-05-07T07:58:28.000Z","size":24020,"stargazers_count":4487,"open_issues_count":105,"forks_count":343,"subscribers_count":73,"default_branch":"main","last_synced_at":"2025-05-07T08:44:25.594Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://idev.cn/fastexcel","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/fast-excel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-05T11:42:50.000Z","updated_at":"2025-05-07T07:58:32.000Z","dependencies_parsed_at":"2024-11-04T06:28:28.032Z","dependency_job_id":"9a03eb77-96b8-4711-b010-5e4770222441","html_url":"https://github.com/fast-excel/fastexcel","commit_stats":null,"previous_names":["codephiliax/easyexcel-plus","codephiliax/fastexcel"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-excel%2Ffastexcel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-excel%2Ffastexcel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-excel%2Ffastexcel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-excel%2Ffastexcel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fast-excel","download_url":"https://codeload.github.com/fast-excel/fastexcel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020638,"owners_count":22000755,"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":[],"created_at":"2025-02-17T10:00:24.731Z","updated_at":"2025-05-13T20:15:17.022Z","avatar_url":"https://github.com/fast-excel.png","language":"Java","funding_links":[],"categories":["Java程序设计","Java"],"sub_categories":["资源传输下载"],"readme":"\n[中文](README.md) |[English](README_EN.md) | [日本語](README_JP.md)\n\n## 什么是 FastExcel\n\nFastExcel 是由原 EasyExcel 作者创建的新项目。2023 年我已从阿里离职，近期阿里宣布停止更新 EasyExcel，我决定继续维护和升级这个项目。在重新开始时，我选择为它起名为 FastExcel，以突出这个框架在处理 Excel 文件时的高性能表现，而不仅仅是简单易用。\n\nFastExcel 将始终坚持免费开源，并采用商业友好的 Apache 协议，使其适用于任何商业化场景。这为开发者和企业提供了极大的自由度和灵活性。FastExcel 的一些显著特点包括：\n\n- 1、完全兼容原 EasyExcel 的所有功能和特性，这使得用户可以无缝过渡。\n\n- 2、从 EasyExcel 迁移到 FastExcel 只需简单地更换包名和 Maven 依赖即可完成升级。\n\n- 3、在功能上，比 EasyExcel 提供更多创新和改进。\n\n- 4、FastExcel 1.0.0 版本新增了读取 Excel 指定行数和将 Excel 转换为 PDF 的功能。\n\n\n我们计划在未来推出更多新特性，以不断提升用户体验和工具实用性。欢迎大家关注 程序员小懒的公众号 关注FastExcel的发展。FastExcel 致力于成为您处理 Excel 文件的最佳选择。\n\n## 主要特性\n\n- 1. 高性能读写：FastExcel 专注于性能优化，能够高效处理大规模的 Excel 数据。相比一些传统的 Excel 处理库，它能显著降低内存占用。\n- 2. 简单易用：该库提供了简洁直观的 API，使得开发者可以轻松集成到项目中，无论是简单的 Excel 操作还是复杂的数据处理都能快速上手。\n- 3. 流式操作：FastExcel 支持流式读取，将一次性加载大量数据的问题降到最低。这种设计方式在处理数十万甚至上百万行的数据时尤为重要。\n\n\n## 安装\n\n下表列出了各版本 FastExcel 基础库对 Java 语言版本最低要求的情况：\n\n| 版本   | jdk版本支持范围 | 备注                             |\n|--------|:---------------:|----------------------------------|\n| 1.0.0+ | jdk8 - jdk21     | 目前的master分支，完全兼容easyexcel |\n\n我们强烈建议您使用最新版本的 FastExcel，因为最新版本中的性能优化、BUG修复和新功能都会让您的使用更加方便。\n\n\u003e 当前 FastExcel 底层使用 poi 作为基础包，如果您的项目中已经有 poi 相关组件，需要您手动排除 poi 的相关 jar 包。\n\n## 更新 \n您可以在 [版本升级详情](CHANGELOG.md) 中查询到具体的版本更新细节。 您也可以在[Maven 中心仓库](https://mvnrepository.com/artifact/cn.idev.excel/fastexcel)中查询到所有的版本。\n### Maven\n如果您使用 Maven 进行项目构建，请在 `pom.xml` 文件中引入以下配置：\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecn.idev.excel\u003c/groupId\u003e\n    \u003cartifactId\u003efastexcel\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n### Gradle\n如果您使用 Gradle 进行项目构建，请在 `build.gradle` 文件中引入以下配置：\n```gradle\ndependencies {\n    implementation 'cn.idev.excel:fastexcel:1.2.0'\n}\n```\n## EasyExcel 与 FastExcel 的区别\n- 1. FastExcel 支持所有 EasyExcel 的功能，但是 FastExcel 的性能更好，更稳定。\n- 2. FastExcel 与 EasyExcel 的 API 完全一致，可以无缝切换。\n- 3. FastExcel 会持续的更新，修复 bug，优化性能，增加新功能。\n\n## EasyExcel 如何升级到 FastExcel\n\n### 1. 修改依赖\n将 EasyExcel 的依赖替换为 FastExcel 的依赖，如下：\n```xml\n\u003c!-- easyexcel 依赖 --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.alibaba\u003c/groupId\u003e\n    \u003cartifactId\u003eeasyexcel\u003c/artifactId\u003e\n    \u003cversion\u003exxxx\u003c/version\u003e\n\u003c/dependency\u003e\n```\n的依赖替换为\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecn.idev.excel\u003c/groupId\u003e\n    \u003cartifactId\u003efastexcel\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### 2. 修改代码\n将 EasyExcel 的包名替换为 FastExcel 的包名，如下：\n```java\n// 将 easyexcel 的包名替换为 FastExcel 的包名\nimport com.alibaba.excel.*;\n```\n替换为\n```java\nimport cn.idev.excel.*;\n```\n### 3. 不修改代码直接依赖 FastExcel\n如果由于种种原因您不想修改代码，可以直接依赖 FastExcel ，然后在 `pom.xml` 文件中直接依赖 FastExcel。\nEasyExcel 与 FastExcel 可以共存，但是长期建议替换为 FastExcel。\n\n### 4. 建议以后使用 FastExcel 类\n为了兼容性考虑保留了 EasyExcel 类，但是建议以后使用 FastExcel 类，FastExcel 类是FastExcel 的入口类，功能包含了 EasyExcel 类的所有功能，以后新特性仅在 FastExcel 类中添加。\n\n\n## 简单示例：读取 Excel 文件\n\n下面是读取 Excel 文档的例子：\n```java\n// 实现 ReadListener 接口，设置读取数据的操作\npublic class DemoDataListener implements ReadListener\u003cDemoData\u003e {\n    @Override\n    public void invoke(DemoData data, AnalysisContext context) {\n        System.out.println(\"解析到一条数据\" + JSON.toJSONString(data));\n    }\n\n    @Override\n    public void doAfterAllAnalysed(AnalysisContext context) {\n        System.out.println(\"所有数据解析完成！\");\n    }\n}\n\npublic static void main(String[] args) {\n    String fileName = \"demo.xlsx\";\n    // 读取 Excel 文件\n    FastExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();\n}\n```\n\n## 简单示例：创建 Excel 文件\n\n下面是一个创建 Excel 文档的简单例子：\n```java\n// 示例数据类\npublic class DemoData {\n    @ExcelProperty(\"字符串标题\")\n    private String string;\n    @ExcelProperty(\"日期标题\")\n    private Date date;\n    @ExcelProperty(\"数字标题\")\n    private Double doubleData;\n    @ExcelIgnore\n    private String ignore;\n}\n\n// 填充要写入的数据\nprivate static List\u003cDemoData\u003e data() {\n    List\u003cDemoData\u003e list = new ArrayList\u003c\u003e();\n    for (int i = 0; i \u003c 10; i++) {\n        DemoData data = new DemoData();\n        data.setString(\"字符串\" + i);\n        data.setDate(new Date());\n        data.setDoubleData(0.56);\n        list.add(data);\n    }\n    return list;\n}\n\npublic static void main(String[] args) {\n    String fileName = \"demo.xlsx\";\n    // 创建一个名为“模板”的 sheet 页，并写入数据\n    FastExcel.write(fileName, DemoData.class).sheet(\"模板\").doWrite(data());\n}\n```\n\n## 关注作者\n关注作者“程序员小懒“的公众号加入技术交流群，获取更多技术干货和最新动态。\n\n\n\u003ca\u003e\u003cimg src=\"https://github.com/user-attachments/assets/b40aebe8-0552-4fb2-b184-4cb64a5b1229\" width=\"30%\"/\u003e\u003c/a\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffast-excel%2Ffastexcel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffast-excel%2Ffastexcel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffast-excel%2Ffastexcel/lists"}