当前位置: 移动技术网 > IT编程>开发语言>Java > Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

2019年07月19日  | 移动技术网IT编程  | 我要评论

java 中poi 导入excel2003 和excel2007的实现方法

实现代码:

import java.io.fileinputstream; 
import java.io.ioexception; 
import java.math.bigdecimal; 
import java.text.simpledateformat; 
import java.util.arraylist; 
import java.util.list; 
 
import org.apache.poi.poixmlexception; 
import org.apache.poi.hssf.usermodel.hssfcell; 
import org.apache.poi.hssf.usermodel.hssfdateutil; 
import org.apache.poi.hssf.usermodel.hssfrow; 
import org.apache.poi.hssf.usermodel.hssfsheet; 
import org.apache.poi.hssf.usermodel.hssfworkbook; 
import org.apache.poi.poifs.filesystem.officexmlfileexception; 
import org.apache.poi.ss.usermodel.cell; 
import org.apache.poi.xssf.usermodel.xssfcell; 
import org.apache.poi.xssf.usermodel.xssfrow; 
import org.apache.poi.xssf.usermodel.xssfsheet; 
import org.apache.poi.xssf.usermodel.xssfworkbook; 
 
/** 
 * excel 导入功能 
 * @author lyq 20150312 
 * @version 1.0 
 */ 
public class excelutils { 
   
  public list<object[]> importexcel(string filepath) throws exception{ 
    list<object[]> list=new arraylist<object[]>(); 
    string filetype=filepath.substring(filepath.lastindexof(".")+1); 
    try { 
      if("xls".equalsignorecase(filetype)){ 
        list= importexcel03(filepath); 
      }else{ 
        list= importexcel07(filepath); 
      } 
    } catch(officexmlfileexception e){//通过手动修改文件名 引起的异常 比如 3.xlsx 重命名 3.xls 其实际文件类型为xlsx 
      list=importexcel07(filepath); 
    } catch(poixmlexception e){//通过手动修改文件名 引起的异常 比如 3.xls 重命名 3.xlsx 其实际文件类型为xls 
      list=importexcel03(filepath); 
    } 
    return list; 
  } 
  public list<object[]> importexcel03(string filepath) throws ioexception{ 
    fileinputstream in=new fileinputstream(filepath); 
    list<object[]> list=new arraylist<object[]>(); 
    hssfworkbook wb=new hssfworkbook(in); 
    hssfsheet sheet = wb.getsheetat(0); 
    int rows = sheet.getphysicalnumberofrows(); 
    hssfrow row=sheet.getrow(0); 
    int cells=row.getlastcellnum(); 
    object[] csr=null; 
    for(int i=1;i<rows;i++){ 
      row=sheet.getrow(i); 
      csr=new string[cells]; 
      for(int j=0;j<cells;j++){ 
        hssfcell cell=row.getcell(j); 
        object obj=null; 
        if(cell!=null){ 
          obj=getvalue(cell); 
        } 
        csr[j]=obj; 
      } 
      list.add(csr); 
    } 
    if(in!=null)in.close(); 
    return list; 
  } 
  public list<object[]> importexcel07(string filepath) throws ioexception{ 
    list<object[]> list=new arraylist<object[]>(); 
    fileinputstream in=new fileinputstream(filepath); 
    xssfworkbook wb=new xssfworkbook(in); 
    xssfsheet sheet = wb.getsheetat(0); 
    int rows = sheet.getphysicalnumberofrows(); 
    xssfrow row=sheet.getrow(0); 
    int cells=row.getlastcellnum(); 
    object[] csr=null; 
    for(int i=1;i<rows;i++){ 
      row=sheet.getrow(i); 
      csr=new string[cells]; 
      for(int j=0;j<cells;j++){ 
        xssfcell cell=row.getcell(j); 
        object obj=null; 
        if(cell!=null){ 
          obj=getvalue(cell); 
        } 
        csr[j]=obj; 
      } 
      list.add(csr); 
    } 
    if(in!=null)in.close(); 
    return list; 
  } 
  @suppresswarnings("static-access") 
  public string getvalue(cell cell){ 
    int type=cell.getcelltype(); 
    string s=""; 
    if(type==cell.cell_type_numeric){ 
      if(hssfdateutil.iscelldateformatted(cell)){ 
        simpledateformat sdf=new simpledateformat("yyyy-mm-dd hh:mm:ss"); 
        s=sdf.format(cell.getdatecellvalue()); 
      }else { 
        bigdecimal db = new bigdecimal(cell.getnumericcellvalue()); 
        s=string.valueof(db); 
      } 
    }else if(type==cell.cell_type_string){ 
      s=cell.getstringcellvalue(); 
    }else if(type==cell.cell_type_boolean){ 
      s=cell.getbooleancellvalue()+""; 
    }else if(type==cell.cell_type_formula){ 
      s=cell.getcellformula(); 
    }else if(type==cell.cell_type_blank){ 
      s=" "; 
    }else if(type==cell.cell_type_error){ 
      s=" "; 
    }else{ 
       
    } 
    return s.trim(); 
  } 
  /** 
   * @param args 
   */ 
  public static void main(string[] args) { 
    excelutils ex=new excelutils(); 
    try { 
      list<object[]> list=ex.importexcel("d:\\3.xls"); 
      for(object[] ss:list){ 
        for(object s:ss){ 
          system.out.print(s+"\t"); 
        } 
        system.out.println(); 
      } 
    } catch (exception e) { 
      e.printstacktrace(); 
    } 
  } 
 
} 

注意:

jdk使用版本(影响excel07)

所使用的核心jar如下

poi-3.8-20120326.jar
poi-ooxml-3.8-20120326.jar
poi-ooxml-schemas-3.8-20120326.jar
xmlbeans-2.3.0.jar

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网