快速、簡單避免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
- 進入所須要導成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網絡
注: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