欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-28 22:02:52
java 中poi 导入excel2003 和excel2007的实现方法 实现代码: import java.io.fileinputstream; im...

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

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