700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > EXCEL POI EASYEXCEL的使用和比较

EXCEL POI EASYEXCEL的使用和比较

时间:2023-06-15 12:06:18

相关推荐

EXCEL POI EASYEXCEL的使用和比较

记录一次处理Excel

EasyExcelPOI处理思路

需求是将八个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();}}}}

好了,结束!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。