Chers utilisateurs d'EasyExcel :
Tout d’abord, nous tenons à exprimer notre plus profonde gratitude pour votre confiance et votre soutien à long terme envers EasyExcel. Au cours de ce voyage, EasyExcel a eu la chance d'accompagner de nombreux développeurs et entreprises à grandir ensemble et a été témoin de l'accomplissement efficace d'innombrables tâches de traitement de données.
Récemment, nous avons remarqué que de meilleurs outils et solutions de traitement de données sont apparus sur le marché, offrant aux utilisateurs des choix plus riches. Afin de garantir que chaque utilisateur puisse profiter de la meilleure expérience et du meilleur service, nous avons décidé de prendre une mesure importante : EasyExcel entrera progressivement en mode maintenance et donnera aux utilisateurs suffisamment de temps pour évaluer et migrer vers d'autres produits. Dans le même temps, nous accueillons également et sommes heureux de voir l'expérience d'utilisation et de migration de produits similaires d'excellente qualité partagée au sein et à l'extérieur de la communauté pour promouvoir conjointement le développement sain de l'écosystème technologique.
Soyez assuré que même si nous passons en mode maintenance, nous veillerons toujours à ce que les fonctions de base d'EasyExcel fonctionnent de manière stable et que des corrections de bugs seront apportées, mais nous n'ajouterons plus activement de nouvelles fonctions. Nous pensons que grâce aux efforts conjoints de tous, chaque élément de code et chaque projet continuera à briller dans ses domaines respectifs et à servir un groupe d'utilisateurs plus large. Merci encore pour votre soutien et votre compréhension d'EasyExcel ! Nous espérons que dans le vaste monde de la technologie, nous pourrons à nouveau nous donner la main sous de nouvelles formes pour créer de l'éclat.
Je vous souhaite tout le meilleur dans votre futur travail et vos études !
Cordialement, l'équipe Alibaba EasyExcel
Les frameworks les plus connus pour l'analyse Java et la génération d'Excel incluent Apache poi et jxl. Mais ils ont tous un sérieux problème car ils consomment beaucoup de mémoire. POI dispose d'un ensemble d'API en mode SAX qui peuvent résoudre dans une certaine mesure certains problèmes de débordement de mémoire, mais POI a encore quelques défauts, tels que la décompression et le stockage du fichier. 07 d'Excel Cela se fait en mémoire, et la consommation de mémoire est encore très importante.
easyexcel a réécrit l'analyse de poi de la version 07 d'Excel. Un Excel 3M nécessite encore environ 100 Mo de mémoire pour être analysé avec POI sax. L'utilisation d'easyexcel peut la réduire à quelques Mo, et quelle que soit la taille d'Excel, il n'y en aura pas. débordement de mémoire ; la version 03 s'appuie sur le mode sax de POI encapsulant la conversion de modèle dans la couche supérieure, la rendant plus facile et plus pratique pour les utilisateurs.
Bien sûr, il existe également un mode vitesse plus rapide, mais l'utilisation de la mémoire sera d'un peu plus de 100 Mo.
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
L'open source n'est pas facile. Si vous pensez qu'EasyExcel est toujours utile à votre travail, aidez-nous en cliquant sur une étoile dans le coin supérieur droit. Votre soutien est la plus grande motivation pour améliorer EasyExcel.
issues
Vous pouvez essayer de rechercher le problème dans les 2 liens suivants. S'il n'existe pas, vous pouvez essayer de créer issue
.
issues
issues
La résolution de problèmes à travers issues
peut être revue par les étudiants qui rencontrent le même problème plus tard, cette méthode est donc fortement recommandée.
Indépendamment de github
ou gitee
, quelqu'un répondra régulièrement à vos questions. Si cela est plus urgent, vous pouvez demander au chef du groupe DingTalk Aite après avoir soulevé issue
et envoyer issue
pour vous aider à le résoudre.
La société QQ
ne vous permet pas de l'utiliser, mais je le regarde parfois, mais le noyau reste définitivement DingTalk.
Rejoignez les groupes DingTalk ou QQ pour obtenir de l'aide après avoir lu l'annonce.
Je recommande fortement le groupe DingTalk, mais QQ
ne vous permet pas de l'utiliser. Bien entendu, le groupe QQ aura également des internautes enthousiastes pour vous aider à résoudre le problème.
Groupe QQ1 (complet) : 662022184
Groupe QQ2 (complet) : 1097936804
Groupe QQ3 (complet) : 453928496
Groupe QQ4 (complet) : 496594404
Groupe QQ5 (complet) : 451925680
Groupe QQ6 (complet) : 784741035
Groupe QQ7 (complet) : 667889383
Groupe QQ8 : 113968681
Groupe DingTalk 1 (complet) : 21960511
Groupe DingTalk 2 (complet) : 32796397
Groupe DingTalk 3 (complet) : 33797247
Groupe DingTalk 4 (complet) : 33491624
Groupe DingTalk 5 (complet) : 32134498
Groupe DingTalk 6 (complet) : 34707941
Groupe DingTalk 7 (complet) : 35235427
Groupe DingTalk 8 (complet) : 44752220
Groupe DingTalk 9 (complet) : 11045002277
Groupe DingTalk 10 (complet) : 27360019755
Groupe DingTalk 11 (complet) : 24330026964
Groupe DingTalk 12 (complet) : 27210038956
Groupe DingTalk 13 : 83695000992
Ji Pengfei (Yuxiao), Zhuang Jiaju
Adresse du code de démonstration : https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
Adresse détaillée du document : 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 ();
}
Adresse du code de démonstration : https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
Adresse détaillée du document : 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 ());
}
Adresse du code de démonstration : 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" ;
}