Estimados usuarios de EasyExcel:
En primer lugar, nos gustaría expresar nuestro más profundo agradecimiento por su confianza y apoyo a largo plazo hacia EasyExcel. Durante este viaje, EasyExcel ha tenido la suerte de acompañar a muchos desarrolladores y empresas a crecer juntos y ha sido testigo de la finalización eficiente de innumerables tareas de procesamiento de datos.
Recientemente, hemos notado que han aparecido en el mercado más herramientas y soluciones de procesamiento de datos excelentes, que brindan a los usuarios opciones más completas. Para garantizar que cada usuario pueda disfrutar de la mejor experiencia y servicio, hemos decidido tomar una medida importante: EasyExcel entrará gradualmente en modo de mantenimiento y dará a los usuarios tiempo suficiente para evaluar y migrar a otros productos. Al mismo tiempo, también damos la bienvenida y nos complace ver el uso y la experiencia de migración de excelentes productos similares compartidos dentro y fuera de la comunidad para promover conjuntamente el desarrollo saludable del ecosistema tecnológico.
Tenga la seguridad de que incluso si ingresamos al modo de mantenimiento, nos aseguraremos de que las funciones básicas de EasyExcel se ejecuten de manera estable y se corregirán los errores, pero ya no agregaremos nuevas funciones activamente. Creemos que a través de los esfuerzos conjuntos de todos, cada fragmento de código y cada proyecto seguirá brillando en sus respectivos campos y sirviendo a un grupo de usuarios más amplio. ¡Gracias nuevamente por su apoyo y comprensión de EasyExcel! Esperamos que en el vasto mundo de la tecnología podamos unirnos nuevamente en nuevas formas para crear brillantez.
¡Te deseo todo lo mejor en tu futuro trabajo y estudio!
Atentamente, Equipo Alibaba EasyExcel
Los marcos más famosos para el análisis y generación de Excel de Java incluyen Apache poi y jxl. Pero todos tienen el grave problema de que consumen mucha memoria. POI tiene un conjunto de API en modo SAX que pueden resolver algunos problemas de desbordamiento de memoria hasta cierto punto, pero POI todavía tiene algunos defectos, como la descompresión y el almacenamiento. 07 de Excel se realiza en la memoria y el consumo de memoria sigue siendo muy grande.
easyexcel ha reescrito el análisis de poi de la versión 07 de Excel. Un excel de 3M todavía requiere alrededor de 100 M de memoria para analizar con POI sax. El uso de easyexcel puede reducirlo a unos pocos MB, y no importa cuán grande sea el excel, no habrá. desbordamiento de memoria; la versión 03 se basa en que el modo sax de POI encapsula la conversión del modelo en la capa superior, lo que lo hace más fácil y conveniente para los usuarios.
Por supuesto, también hay un modo de velocidad que es más rápido, pero el uso de memoria será un poco más de 100 M.
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
El código abierto no es fácil. Si cree que EasyExcel sigue siendo útil para su trabajo, ayúdelo haciendo clic en una estrella en la esquina superior derecha. Su apoyo es la mayor motivación para mejorar EasyExcel.
issues
Puede intentar buscar el problema en los 2 enlaces siguientes. Si no existe, puede intentar crear issue
.
issues
issues
Los estudiantes que se encuentren con el mismo problema más adelante pueden revisar la resolución de problemas a través issues
, por lo que este método es muy recomendable.
Independientemente de github
o gitee
, alguien responderá sus preguntas con regularidad. Si es más urgente, puede preguntarle al líder del grupo Aite del grupo DingTalk después de plantear issue
y enviar issue
para ayudar a resolverlo.
La compañía QQ
no te permite usarlo, pero a veces lo miro, pero el núcleo definitivamente sigue siendo DingTalk.
Únase a los grupos DingTalk o QQ para obtener ayuda después de leer el anuncio.
Recomiendo encarecidamente el grupo DingTalk, pero QQ
no le permite usarlo. Por supuesto, el grupo QQ también contará con internautas entusiastas que le ayudarán a resolver el problema.
Grupo QQ1 (completo): 662022184
Grupo QQ2 (completo): 1097936804
Grupo QQ3 (completo): 453928496
Grupo QQ4 (completo): 496594404
Grupo QQ5 (completo): 451925680
Grupo QQ6 (completo): 784741035
Grupo QQ7 (completo): 667889383
Grupo QQ8: 113968681
Grupo DingTalk 1 (completo): 21960511
Grupo DingTalk 2 (completo): 32796397
Grupo DingTalk 3 (completo): 33797247
Grupo DingTalk 4 (completo): 33491624
Grupo DingTalk 5 (completo): 32134498
Grupo DingTalk 6 (completo): 34707941
Grupo DingTalk 7 (completo): 35235427
Grupo DingTalk 8 (completo): 44752220
Grupo DingTalk 9 (completo): 11045002277
Grupo DingTalk 10 (completo): 27360019755
Grupo DingTalk 11 (completo): 24330026964
Grupo DingTalk 12 (completo): 27210038956
Grupo DingTalk 13: 83695000992
Ji Pengfei (Yuxiao), Zhuang Jiaju
Dirección del código de demostración: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
Dirección detallada del documento: 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 ();
}
Dirección del código de demostración: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
Dirección detallada del documento: 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 ());
}
Dirección del código de demostración: 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" ;
}