alibaba-easyexcel使用問題總結

快速、簡單避免OOM的java處理Excel工具java

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

下載jar包的:MvnJar - 專一於搜索/瀏覽/探討Maven庫項目github

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

離線jar包導爲pom依賴

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

若是上面pom依賴不生效的話就本身下jar包,將jar包導爲pom依賴。apache

  1. 進入所須要導成pom的jar包目錄
  2. 使用maven命令打包

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

注:app

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

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

    -Dversion:pom文件中依賴的版本號

    -Dpackaging:打包類型

    -Dfile: 要打包的jar包文件全路徑(若是已經進入該目錄則只須要jar包名便可)

如圖build success 後就在本地maven的repository【setting.xml所設置的路徑】中生成pom依賴,在項目中pom.xml引入依賴便可。socket

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包下載便可:maven

Java經過Url獲取InputStream

文件路徑爲url的狀況ide

/**
 * 經過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();
        }
    }

}

結果以下

[處事, 領導, 類型]
[一處, 小白, 文件]
[二處, 小紅, 檔案]
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
相關文章
相關標籤/搜索