Liebe EasyExcel-Benutzer:
Zunächst möchten wir uns ganz herzlich für Ihr langjähriges Vertrauen und Ihre Unterstützung von EasyExcel bedanken. Auf dieser Reise hatte EasyExcel das Glück, viele Entwickler und Unternehmen beim gemeinsamen Wachstum zu begleiten und die effiziente Erledigung unzähliger Datenverarbeitungsaufgaben mitzuerleben.
In letzter Zeit haben wir festgestellt, dass immer mehr hervorragende Datenverarbeitungstools und -lösungen auf den Markt gekommen sind, die den Benutzern eine größere Auswahl bieten. Um sicherzustellen, dass jeder Benutzer das beste Erlebnis und den besten Service genießen kann, haben wir uns zu einem wichtigen Schritt entschieden: EasyExcel wird schrittweise in den Wartungsmodus wechseln und den Benutzern ausreichend Zeit für die Evaluierung und Migration auf andere Produkte geben. Gleichzeitig begrüßen und freuen wir uns auch darüber, dass die Nutzungs- und Migrationserfahrungen ähnlicher hervorragender Produkte innerhalb und außerhalb der Community geteilt werden, um gemeinsam die gesunde Entwicklung des Technologie-Ökosystems zu fördern.
Bitte seien Sie versichert, dass wir auch dann, wenn wir in den Wartungsmodus wechseln, weiterhin dafür sorgen werden, dass die Grundfunktionen von EasyExcel stabil laufen und Fehler behoben werden, aber wir werden keine neuen Funktionen mehr aktiv hinzufügen. Wir glauben, dass durch die gemeinsamen Anstrengungen aller, jeder Code und jedes Projekt weiterhin in seinen jeweiligen Bereichen glänzen und einer breiteren Benutzergruppe dienen wird. Nochmals vielen Dank für Ihre Unterstützung und Ihr Verständnis für EasyExcel! Wir hoffen, dass wir uns in der riesigen Welt der Technologie erneut in neuen Formen zusammenschließen können, um gemeinsam Brillanz zu schaffen.
Ich wünsche Ihnen alles Gute für Ihre zukünftige Arbeit und Ihr Studium!
Mit freundlichen Grüßen, Alibaba EasyExcel Team
Zu den bekannteren Frameworks für das Java-Parsen und Generieren von Excel gehören Apache Poi und JXL. Aber sie alle haben das ernste Problem, dass sie viel Speicher verbrauchen. POI verfügt über eine Reihe von SAX-Modus-APIs, die einige Speicherüberlaufprobleme bis zu einem gewissen Grad lösen können, aber POI weist immer noch einige Mängel auf, wie z. B. die Dekomprimierung und Speicherung 07-Version von Excel erfolgt im Speicher und der Speicherverbrauch ist immer noch sehr groß.
easyexcel schreibt die Poi-Analyse der 07-Version von Excel neu und benötigt zum Parsen mit POI-Sax immer noch etwa 100 MB Speicher. Unabhängig davon, wie groß Excel ist, ist kein Speicher vorhanden Überlauf; Version 03 basiert auf dem Sax-Modus von POI und kapselt die Modellkonvertierung in der oberen Ebene, was sie für Benutzer einfacher und bequemer macht.
Natürlich gibt es auch einen Geschwindigkeitsmodus, der schneller ist, aber die Speichernutzung wird etwas mehr als 100 MB betragen.
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
Wenn Sie glauben, dass EasyExcel für Ihre Arbeit immer noch hilfreich ist, helfen Sie bitte, indem Sie auf einen Stern in der oberen rechten Ecke klicken. Ihre Unterstützung ist die größte Motivation, EasyExcel zu verbessern.
issues
Sie können versuchen, über die folgenden zwei Links nach dem Problem zu suchen. Wenn es nicht vorhanden ist, können Sie versuchen, issue
zu erstellen.
issues
issues
Das Lösen von Problemen durch issues
kann von Schülern überprüft werden, die später auf dasselbe Problem stoßen. Daher wird diese Methode dringend empfohlen.
Unabhängig von github
oder gitee
wird regelmäßig jemand Ihre Fragen beantworten. Wenn es dringender ist, können Sie den Aite-Gruppenleiter der DingTalk-Gruppe fragen, nachdem Sie issue
angesprochen haben, und issue
Problemadresse senden, um bei der Lösung zu helfen.
Die QQ
-Firma erlaubt Ihnen nicht, es zu verwenden, aber ich schaue es mir manchmal an, aber der Kern ist definitiv immer noch DingTalk.
Treten Sie DingTalk- oder QQ-Gruppen bei, um Hilfe zu erhalten, nachdem Sie die Ankündigung gelesen haben.
Ich kann die DingTalk-Gruppe nur wärmstens empfehlen. Natürlich wird die QQ
-Gruppe auch begeisterte Internetnutzer haben, die bei der Lösung des Problems helfen.
QQ1-Gruppe (vollständig): 662022184
QQ2-Gruppe (vollständig): 1097936804
QQ3-Gruppe (vollständig): 453928496
QQ4-Gruppe (vollständig): 496594404
QQ5-Gruppe (vollständig): 451925680
QQ6-Gruppe (vollständig): 784741035
QQ7-Gruppe (vollständig): 667889383
QQ8-Gruppe: 113968681
DingTalk 1-Gruppe (vollständig): 21960511
DingTalk 2-Gruppe (vollständig): 32796397
DingTalk 3-Gruppe (vollständig): 33797247
DingTalk 4-Gruppe (vollständig): 33491624
DingTalk 5-Gruppe (vollständig): 32134498
DingTalk 6-Gruppe (vollständig): 34707941
DingTalk 7-Gruppe (vollständig): 35235427
DingTalk 8-Gruppe (vollständig): 44752220
DingTalk 9-Gruppe (vollständig): 11045002277
DingTalk 10-Gruppe (vollständig): 27360019755
DingTalk 11-Gruppe (vollständig): 24330026964
DingTalk 12-Gruppe (vollständig): 27210038956
DingTalk 13-Gruppe: 83695000992
Ji Pengfei (Yuxiao), Zhuang Jiaju
Demo-Code-Adresse: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
Detaillierte Dokumentadresse: 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 ();
}
Demo-Code-Adresse: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
Detaillierte Dokumentadresse: 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 ());
}
Demo-Code-Adresse: 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" ;
}