Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据。下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API。

     下面分享一下在对POI进行基本操作时觉得需要注意的两点:

      1.POI中针对xlsx/xls是需要create different Workbook instance HSSFWorkbook是针对xls XSSFWorkbook是针对xlsx的。

   1:  String fileaddress="E:/博客统计.xlsx"; //读取Excel地址
   2:  XSSFWorkbook wb=null;
   3:  File f = new File(fileaddress);// 读取excel文件
   4:  FileInputStream is = new FileInputStream(f);// 创建文件流
   5:  if(fileaddress.toLowerCase().endsWith("xlsx")){
   6:       wb = new XSSFWorkbook(is);  //如果xlsx版本的就创建XSSFWorkbook对象
   7:  } else if(fileName.toLowerCase().endsWith("xls")){  
   8:       wb = new HSSFWorkbook(is);  //如果xls版本的就创建HSSFWorkbook对象
   9:  }

      2.在向Excel中导入数据时需要明白sheet中是否有row这个对象,如果有的话就getRow(),gerCell(),setCellValue(),没有的话就需要createRow(),createCell(),setCellValue().

   1:    XSSFSheet sheet = wb.getSheetAt(1); // 第一个工作表  
   2:    int lastrow = sheet.getLastRowNum() + 1;   
   3:    if(rowindex_<lastrow){    
   4:      XSSFRow row = sheet.getRow(rowindex_);// 获得行对象             
   5:      row.getCell(0).setCellValue(bolgname2);      
   6:      row.getCell(1).setCellValue(linktime2);    
   7:      row.getCell(2).setCellValue(linktitle2);      
   8:      row.getCell(3).setCellValue(linkresult2);     
   9:      row.getCell(4).setCellValue(linkred2);      
  10:      row.getCell(5).setCellValue(linkpinglun2);      
  11:      row.getCell(6).setCellValue(tuijianString2);      
  12:      row.getCell(7).setCellValue(fanduiString2);      
  13:      }            
  14:      else{      
  15:       XSSFRow row = sheet.createRow(rowindex_);    
  16:       row.createCell(0).setCellValue(bolgname2);    
  17:       row.createCell(1).setCellValue(linktime2);   
  18:       row.createCell(2).setCellValue(linktitle2);   
  19:       row.createCell(3).setCellValue(linkresult2);   
  20:       row.createCell(4).setCellValue(linkred2);    
  21:       row.createCell(5).setCellValue(linkpinglun2);    
  22:       row.createCell(6).setCellValue(tuijianString2);    
  23:       row.createCell(7).setCellValue(fanduiString2);    
  24:         }
     3.关闭流
   1:  FileOutputStream fileOut = new FileOutputStream(fileaddress);
   2:          wb.write(fileOut);
   3:          is.close();
   4:          fileOut.close();

       最后今天对博客统计修复了一个bug,发现正则表达式在控制字符串格式时很给力但是水很深需要好好学习,就把他当成下一个学习目标,然后下一次解决问题时,脑子里迸出来的就是他。

posted @ 2015-07-24 21:55  戴杭林  阅读(532)  评论(0编辑  收藏  举报