快速、簡單避免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依賴。
- 進入所需要導成pom的jar包目錄
- 使用maven命令打包
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();
}
}
}
結果如下
[處事, 領導, 類型]
[一處, 小白, 文件]
[二處, 小紅, 檔案]
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