Prezados usuários do EasyExcel:
Em primeiro lugar, gostaríamos de expressar a nossa mais profunda gratidão pela sua confiança e apoio de longo prazo ao EasyExcel. Durante esta jornada, EasyExcel teve a sorte de acompanhar muitos desenvolvedores e empresas no crescimento conjunto e testemunhou a conclusão eficiente de inúmeras tarefas de processamento de dados.
Recentemente, notamos que surgiram no mercado mais ferramentas e soluções excelentes de processamento de dados, proporcionando aos usuários opções mais ricas. Para garantir que cada usuário possa desfrutar da melhor experiência e serviço, decidimos tomar uma medida importante: o EasyExcel entrará gradualmente em modo de manutenção e dará aos usuários tempo suficiente para avaliar e migrar para outros produtos. Ao mesmo tempo, também saudamos e estamos felizes em ver a experiência de utilização e migração de excelentes produtos semelhantes partilhados dentro e fora da comunidade para promover conjuntamente o desenvolvimento saudável do ecossistema tecnológico.
Tenha certeza de que mesmo se entrarmos no modo de manutenção, ainda garantiremos que as funções básicas do EasyExcel funcionem de forma estável e correções de bugs serão feitas, mas não adicionaremos mais ativamente novas funções. Acreditamos que através dos esforços conjuntos de todos, cada pedaço de código e cada projeto continuarão a brilhar em seus respectivos campos e a servir um grupo de usuários mais amplo. Obrigado novamente por seu apoio e compreensão do EasyExcel! Esperamos que, no vasto mundo da tecnologia, possamos dar as mãos novamente em novas formas para criar brilho.
Desejo a você tudo de melhor em seu futuro trabalho e estudo!
Atenciosamente, Equipe Alibaba EasyExcel
As estruturas mais famosas para análise Java e geração de Excel incluem Apache poi e jxl. Mas todos eles têm um problema sério de consumir muita memória. O POI possui um conjunto de APIs de modo SAX que podem resolver alguns problemas de estouro de memória até certo ponto, mas o POI ainda apresenta algumas falhas, como a descompactação e armazenamento do. Versão 07 do Excel É feito em memória e o consumo de memória ainda é muito grande.
O easyexcel reescreveu a análise do poi da versão 07 do Excel. Um excel 3M ainda requer cerca de 100M de memória para analisar com o POI sax. Usar o easyexcel pode reduzi-lo para alguns MB e, não importa o tamanho do excel, não haverá. estouro de memória; a versão 03 depende do modo sax do POI que encapsula a conversão do modelo na camada superior, tornando-a mais fácil e conveniente para os usuários.
Claro, também existe um modo de velocidade que é mais rápido, mas o uso de memória será de pouco mais de 100M.
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
Código aberto não é fácil. Se você acha que o EasyExcel ainda é útil para o seu trabalho, ajude clicando em uma estrela no canto superior direito. Seu apoio é a maior motivação para tornar o EasyExcel melhor.
issues
Você pode tentar procurar o problema nos 2 links a seguir. Se ele não existir, você pode tentar criar issue
.
issues
issues
A resolução de problemas por meio issues
pode ser revisada por alunos que encontrarem o mesmo problema posteriormente, portanto, esse método é altamente recomendado.
Independentemente do github
ou gitee
, alguém responderá às suas perguntas regularmente. Se for mais urgente, você pode perguntar ao líder do grupo Aite do grupo DingTalk após levantar issue
e enviar issue
para ajudar a resolvê-lo.
A empresa QQ
não permite que você o use, mas às vezes eu olho para ele, mas o núcleo definitivamente ainda é o DingTalk.
Junte-se aos grupos DingTalk ou QQ para obter ajuda depois de ler o anúncio.
Eu recomendo fortemente o grupo DingTalk, mas QQ
não permite que você o use. É claro que o grupo QQ também terá internautas entusiasmados para ajudar a resolver o 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
Endereço do código de demonstração: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
Endereço detalhado do 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 ();
}
Endereço do código de demonstração: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
Endereço detalhado do 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 ());
}
Endereço do código de demonstração: 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" ;
}