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
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
如对本文有疑问, 点击进行留言回复!!
Android 4.0使用Kotlin调用C语言以及汇编语言
Java Class.forName()用法和newInstance()方法原理解析
网友评论