EXCEL,POI,EASYEXCEL的使用和比較
需求是將八個Excel資料合併到一個Excel表當中,這八個Excel資料的表格式相同,所以其實對於資料的讀取是一樣的。
EasyExcel
easyexcel是阿里巴巴開源的一個處理excel的工具包,同時因為easyescel有中文文件,而且操作簡單,所以一開始使用了easyexcel,但是在使用過程中發現,它所提供的api不夠全面,無法做到精確定位,精確操作,只能一列一列來讀寫,而且無法在過程中進行判斷什麼的。
總的來說,不夠靈活,但足夠簡單。
POI
poi是apache的一個子專案,專門用來處理Excel的,不管怎麼說,這個幫大忙了,雖然操作相對於easyexcel來說複雜一點,但是也挺簡單的,基本上一小時上手,三小時會用,用一天就已經算比較熟悉了。
處理思路
一開始,我計劃用easyexcel全部處理完成,但是不夠靈活。
然後我盯上了poi,稍微學了下,一開始想著先把要讀的檔案讀出來到map<name, content>中,然後在把要寫的檔案讀出來它的<name, index>,然後再根據座標和內容的匹配寫進去,但是!一直報空指標錯誤,怎麼樣搞都不行。
但是最後我換了中方法解決了。用的是在用outputstream的同時獲取excel的資訊來做判斷,程式碼如下:
public class RunToThat {
public void sonofbitch() throws Exception{
List<String> list = new ArrayList<>();
list.add("0");list.add("0_left");list.add("1_left");list.add("2");list.add("2_left");list.add("3");list.add("3_left");list.add("1");
for(String a : list){
ojbk(a);
}
}
public void ojbk(String a) throws Exception{
readListener readListener = new readListener();
String Readfilename = "C:\\Users\\12979\\Desktop\\ok\\"+a+".xlsx";
System.out.println("讀取中!");
EasyExcel.read(Readfilename, DemoData.class,readListener).sheet().doRead();
FileInputStream fileInputStream=new FileInputStream("C:\\Users\\12979\\Desktop\\ok\\last.xlsx"); //獲取d://test.xls,建立資料的輸入通道
System.out.println(fileInputStream);
//POIFSFileSystem poifsFileSystem=new POIFSFileSystem(fileInputStream); //使用POI提供的方法得到excel的資訊
System.out.println("excel-1的資訊:"+fileInputStream);
XSSFWorkbook Workbook= new XSSFWorkbook(fileInputStream);//得到文件物件
System.out.println("excel-2的資訊:"+Workbook);
XSSFSheet sheet=Workbook.getSheet("sheet1"); //根據name獲取sheet表
System.out.println("excel-3的資訊:"+sheet);
Map<String,String> map = readListener.map;
System.out.println(map);
for(int i = 1; i < sheet.getLastRowNum(); i++){
String fuck = sheet.getRow(i).getCell(0).toString();
String ok;
if(fuck.length() >= 3){
ok = fuck.substring(0,3);
}else {
ok = fuck;
}
System.out.println(ok);
if(map.get(ok)!= null){
System.out.println("aha"+sheet.getRow(i).getCell(0));
XSSFRow row=sheet.getRow(i); //獲取第一行
FileOutputStream out=new FileOutputStream("C:\\Users\\12979\\Desktop\\ok\\last.xlsx"); //向d://test.xls中寫資料
XSSFCell cell = row.createCell(5);
cell.setCellValue(map.get(ok));
out.flush();
Workbook.write(out);
out.close();
}
}
}
}
好了,結束!
相關文章
- easyExcel & poi 比較Excel
- Java操作Excel:POI和EasyExcelJavaExcel
- POI 和 easyExcel 的簡介Excel
- 比 poi匯入匯出更好用的 EasyExcel使用小結Excel
- java使用poi生成excelJavaExcel
- Excel與DBMS、Tableau和Power BI比較Excel
- 阿里出品Excel工具EasyExcel使用小結阿里Excel
- POI的使用及匯出excel報表Excel
- Python與Excel VBA比較PythonExcel
- excel 字元比較函式Excel字元函式
- poi的excel匯出Excel
- Apache POI 建立 ExcelApacheExcel
- js 深比較和淺比較JS
- SAP ABAP ADBC和Java JDBC的使用比較JavaJDBC
- java使使用者EasyExcel匯入匯出excelJavaExcel
- Go和Python比較的話,哪個比較好?GoPython
- 使用Java通過POI讀取EXCEL中的資料JavaExcel
- POI生成EXCEL檔案Excel
- poi解析Excel內容Excel
- ==和equals方法的比較
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- easyExcel匯出多個list列表的excelExcel
- Oracle date 型別比較和String比較Oracle型別
- easyExcel使用Excel
- Java架構-Apache POI ExcelJava架構ApacheExcel
- springboot poi匯出excel表格Spring BootExcel
- Apache POI處理Excel文件ApacheExcel
- EasyExcel完成excel檔案的匯入匯出Excel
- not in 和 not exists 比較和用法
- 使用perl比較mysql的版本MySql
- XTask與RxJava的使用比較RxJava
- TreeMap和HashMap的元素比較HashMap
- Go 與 C++ 的對比和比較GoC++
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- etcd和redis比較Redis