EasyExcel ユーザーの皆様:
まず、EasyExcel に対する長年にわたるご信頼とご支援に深く感謝いたします。この旅の間、EasyExcel は幸運にも多くの開発者や企業とともに成長し、数え切れないほどのデータ処理タスクが効率的に完了するのを目撃してきました。
最近、より優れたデータ処理ツールやソリューションが市場に登場し、ユーザーに豊富な選択肢を提供していることに気づきました。すべてのユーザーが最高のエクスペリエンスとサービスを確実に享受できるようにするために、私たちは重要な措置を講じることを決定しました。EasyExcel は徐々にメンテナンス モードに入り、ユーザーが他の製品を評価して移行するための十分な時間を与えます。同時に、テクノロジー エコシステムの健全な発展を共同で促進するために、同様の優れた製品の使用と移行の経験がコミュニティ内外で共有されることを歓迎し、嬉しく思います。
メンテナンスモードに入ってもEasyExcelの基本機能の安定動作やバグ修正は行いますが、積極的な新機能の追加は行いませんのでご安心ください。私たちは、全員の共同の努力を通じて、すべてのコードとすべてのプロジェクトがそれぞれの分野で輝き続け、より幅広いユーザー グループにサービスを提供できると信じています。 EasyExcel へのサポートとご理解に改めて感謝いたします。広大なテクノロジーの世界で、私たちは再び新しい形で手を取り合い、輝きを生み出すことができることを願っています。
今後の仕事と勉強の成功を祈っています!
よろしくお願いします、Alibaba EasyExcel チーム
Java の解析と Excel 生成のためのより有名なフレームワークには、Apache poi と jxl があります。しかし、それらはすべて、大量のメモリを消費するという深刻な問題を抱えています。POI には、メモリ オーバーフローの問題をある程度解決できる一連の SAX モード API がありますが、POI には、ファイルの解凍や保存など、まだいくつかの欠陥があります。 Excel の 07 バージョンでは、メモリ内で実行されるため、メモリの消費量が依然として非常に多くなります。
easyexcel は、Excel の 07 バージョンの poi の分析を書き換えました。3M Excel は、POI sax で解析するのに約 100M のメモリを必要とします。easyexcel を使用すると、Excel がどれほど大きくても、メモリは数 MB に削減されます。メモリ オーバーフロー。バージョン 03 は POI の Sax モードに依存し、上位層でモデル変換をカプセル化するため、ユーザーにとってはより簡単かつ便利になります。
もちろん、より高速なスピードモードもありますが、メモリ使用量は100Mを少し超えます。
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
オープンソースは簡単ではありません。EasyExcel がまだあなたの仕事に役立つと思われる場合は、右上隅にある星をクリックしてご協力ください。EasyExcel を改善する最大の動機です。
issues
次の 2 つのリンクで問題を検索してみてください。存在しない場合は、 issue
の作成を試みることができます。
issues
を検索しますissues
を検索するissues
を解くと、後で同じ問題に遭遇した生徒も復習できるので、この方法は非常におすすめです。
github
かgitee
に関係なく、誰かが定期的に質問に答えてくれます。より緊急の場合は、 issue
提起した後に DingTalk グループ Aite グループのリーダーに質問し、 issue
解決に役立つアドレスを送信することができます。
QQ
社は使用を許可していませんが、時々見ますが、コアは間違いなくDingTalkです。
お知らせを読んだ後は、DingTalk または QQ グループに参加してサポートを受けてください。
私は DingTalk グループを強くお勧めしますが、 QQ
会社はそれを使用することを許可していません。もちろん、QQ グループには問題の解決を支援する熱心なネチズンもいます。
QQ1 グループ (フル): 662022184
QQ2 グループ (フル): 1097936804
QQ3 グループ (フル): 453928496
QQ4 グループ (フル): 496594404
QQ5 グループ (フル): 451925680
QQ6 グループ (フル): 784741035
QQ7 グループ (フル): 667889383
QQ8グループ:113968681
DingTalk 1 グループ (フル): 21960511
DingTalk 2 グループ (フル): 32796397
DingTalk 3 グループ (フル): 33797247
DingTalk 4 グループ (フル): 33491624
DingTalk 5 グループ (フル): 32134498
DingTalk 6 グループ (フル): 34707941
DingTalk 7 グループ (フル): 35235427
DingTalk 8 グループ (フル): 44752220
DingTalk 9 グループ (フル): 11045002277
DingTalk 10 グループ (フル): 27360019755
DingTalk 11 グループ (フル): 24330026964
DingTalk 12 グループ (フル): 27210038956
DingTalk 13 グループ: 83695000992
ジー・ペンフェイ(ユシャオ)、荘佳珠
デモコードのアドレス: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
詳細ドキュメントのアドレス: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read
/**
* 最简单的读
* <p>1. 创建excel对应的实体对象 参照{@link DemoData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link DemoDataListener}
* <p>3. 直接读即可
*/
@ Test
public void simpleRead () {
String fileName = TestFileUtil . getPath () + "demo" + File . separator + "demo.xlsx" ;
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel . read ( fileName , DemoData . class , new DemoDataListener ()). sheet (). doRead ();
}
デモコードのアドレス: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
詳細ドキュメントのアドレス: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write
/**
* 最简单的写
* <p>1. 创建excel对应的实体对象 参照{@link com.alibaba.easyexcel.test.demo.write.DemoData}
* <p>2. 直接写即可
*/
@ Test
public void simpleWrite () {
String fileName = TestFileUtil . getPath ()+ "write" + System . currentTimeMillis ()+ ".xlsx" ;
// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 如果这里想使用03 则 传入excelType参数即可
EasyExcel . write ( fileName , DemoData . class ). sheet ( "模板" ). doWrite ( data ());
}
デモコードのアドレス: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java
/**
* 文件下载(失败了会返回一个有部分数据的Excel)
* <p>
* 1. 创建excel对应的实体对象 参照{@link DownloadData}
* <p>
* 2. 设置返回的 参数
* <p>
* 3. 直接写,这里注意,finish的时候会自动关闭OutputStream,当然你外面再关闭流问题不大
*/
@ GetMapping ( "download" )
public void download ( HttpServletResponse response ) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response . setContentType ( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" );
response . setCharacterEncoding ( "utf-8" );
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder . encode ( "测试" , "UTF-8" ). replaceAll ( " \ +" , "%20" );
response . setHeader ( "Content-disposition" , "attachment;filename*=utf-8''" + fileName + ".xlsx" );
EasyExcel . write ( response . getOutputStream (), DownloadData . class ). sheet ( "模板" ). doWrite ( data ());
}
/**
* 文件上传
* <p>1. 创建excel对应的实体对象 参照{@link UploadData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link UploadDataListener}
* <p>3. 直接读即可
*/
@ PostMapping ( "upload" )
@ ResponseBody
public String upload ( MultipartFile file ) throws IOException {
EasyExcel . read ( file . getInputStream (), UploadData . class , new UploadDataListener ( uploadDAO )). sheet (). doRead ();
return "success" ;
}