码迷,mamicode.com
首页 > 其他好文 > 详细

alibaba-easyexcel使用问题总结

时间:2019-04-15 23:28:48      阅读:868      评论:0      收藏:0      [点我收藏+]

标签:imp   lis   127.0.0.1   after   reader   总结   输入   override   depend   

快速、简单避免OOM的java处理Excel工具

GitHub地址:https://github.com/alibaba/easyexcel

下载jar包的:MvnJar - 专注于搜索/浏览/探讨Maven库项目

找jar包pom依赖的: https://mvnrepository.com/

离线jar包导为pom依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>1.1.2-beta5</version>
</dependency>

如果上面pom依赖不生效的话就自己下jar包,将jar包导为pom依赖。

  1. 进入所需要导成pom的jar包目录
  2. 使用maven命令打包(示例是将servlet-api.jar打成依赖)

mvn install:install-file -DgroupId=com.alibaba -DartifactId=easyexcel -Dversion=1.1.2-beta5 -Dpackaging=jar -Dfile=easyexcel-1.1.2-beta5.jar

注:

    -DgroupId:pom文件中依赖的groupId名

    -DartifactId:pom文件中依赖的artifactId名

    -Dversion:pom文件中依赖的版本号

    -Dpackaging:打包类型

    -Dfile: 要打包的jar包文件全路径(如果已经进入该目录则只需要jar包名即可)

技术图片

如图build success 后就在本地maven的repository【setting.xml所设置的路径】中生成pom依赖,在项目中pom.xml引入依赖即可。

java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/FileMagic问题解决

离线导入的easyexcel-1.1.2-beta5.jar后,本地缺少poi等相应的pom依赖的jar包。打开easyexcel-1.1.2-beta5.jar的pom.xml文件,将里面所依赖的jar包下载即可:

技术图片

Java通过Url获取InputStream

文件路径为url的情况

/**
 * 通过url取得文件返回InputStream类型数据
 */
public class HttpUtils {
    /**
     * @param url
     * @return
     */
    public static InputStream returnBitMap(String path) {
        URL url = null;
        InputStream is =null;
        try {
            url = new URL(path);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        try {//利用HttpURLConnection对象,我们可以从网络中获取网页数据.
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true);
            conn.connect();
            is = conn.getInputStream(); //得到网络返回的输入流    
        } catch (IOException e) {
            e.printStackTrace();
        }
        return is;
    }
}

注意:文件流还要转成buffer

https://github.com/alibaba/easyexcel/issues/215

有问题还是看看issues上有没有类似的问题。

是在不济就看源码吧。



简单测试

package io.github.newmean.demo;

import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
        try (BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("D:\\excel\\测试.xlsx"))) {
            AnalysisEventListener<Object> objectAnalysisEventListener = new AnalysisEventListener<Object>(){
                @Override
                public void invoke(Object o, AnalysisContext analysisContext) {
                    System.out.println(o);
                }

                @Override
                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                }
            };
            ExcelReader excelReader = new ExcelReader(bufferedInputStream, null, objectAnalysisEventListener);
            excelReader.read();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

结果如下

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

2019-04-15 22:25:01.505  INFO 7448 --- [           main] i.g.newmean.demo.DemoApplicationTests    : Starting DemoApplicationTests on coderNiu with PID 7448 (started by NiuMing in D:\IdeaProjects\demo)
2019-04-15 22:25:01.505  INFO 7448 --- [           main] i.g.newmean.demo.DemoApplicationTests    : No active profile set, falling back to default profiles: default
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2019-04-15 22:25:07.427  INFO 7448 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-04-15 22:25:08.422  INFO 7448 --- [           main] i.g.newmean.demo.DemoApplicationTests    : Started DemoApplicationTests in 8.762 seconds (JVM running for 17.343)
[处事, 领导, 类型]
[一处, 小白, 文件]
[二处, 小红, 档案]
Disconnected from the target VM, address: '127.0.0.1:53624', transport: 'socket'
2019-04-15 22:25:10.439  INFO 7448 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

Process finished with exit code 0

alibaba-easyexcel使用问题总结

标签:imp   lis   127.0.0.1   after   reader   总结   输入   override   depend   

原文地址:https://www.cnblogs.com/nm666/p/10713765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!