Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法
程序员文章站
2024-03-31 13:46:46
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
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: 快速搞懂Android口令加密(一)
推荐阅读
-
java中实现反射,以及利用反射实现调用已知class文件的方法和属性。
-
Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法
-
用java实现在txt文本中写数据和读数据的方法
-
Java实现批量导入excel表格数据到数据库中的方法
-
用java实现在txt文本中写数据和读数据的方法
-
定义两个接口,其中各包括一个抽象方法分别用来完成两个数的加法和减法操作,然后创建一个类KY6_3来实现这两个接口中的抽象方法。编写程序KY6_3.java,将源程序写在实验报告中。
-
Java 使用poi把数据库中数据导入Excel的解决方法
-
Java 使用poi把数据库中数据导入Excel的解决方法
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
java使用POI实现excel文件的导入和导出(通用方法)