java解析Excel的方法(xls、xlsx两种格式)
程序员文章站
2023-12-05 22:16:10
一、需要导入的jar
1.commons-collections4-4.1.jar
2.poi-3.17-beta1.jar
3.poi-ooxml-3....
一、需要导入的jar
1.commons-collections4-4.1.jar
2.poi-3.17-beta1.jar
3.poi-ooxml-3.17-beta1.jar
4.poi-ooxml-schemas-3.17-beta1.jar
5.xmlbeans-2.6.0.jar
二、主要api
1.import org.apache.poi.ss.usermodel.workbook,对应excel文档;
2.import org.apache.poi.hssf.usermodel.hssfworkbook,对应xls格式的excel文档;
3.import org.apache.poi.xssf.usermodel.xssfworkbook,对应xlsx格式的excel文档;
4.import org.apache.poi.ss.usermodel.sheet,对应excel文档中的一个sheet;
5.import org.apache.poi.ss.usermodel.row,对应一个sheet中的一行;
6.import org.apache.poi.ss.usermodel.cell,对应一个单元格。
三、代码如下
package poi; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.ioexception; import java.io.inputstream; import java.util.arraylist; import java.util.linkedhashmap; import java.util.list; import java.util.map; import java.util.map.entry; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.cell; import org.apache.poi.ss.usermodel.dateutil; import org.apache.poi.ss.usermodel.row; import org.apache.poi.ss.usermodel.sheet; import org.apache.poi.ss.usermodel.workbook; import org.apache.poi.xssf.usermodel.xssfworkbook; public class testpoi { public static void main(string[] args) { workbook wb =null; sheet sheet = null; row row = null; list<map<string,string>> list = null; string celldata = null; string filepath = "d:\\test.xlsx"; string columns[] = {"name","age","score"}; wb = readexcel(filepath); if(wb != null){ //用来存放表中数据 list = new arraylist<map<string,string>>(); //获取第一个sheet sheet = wb.getsheetat(0); //获取最大行数 int rownum = sheet.getphysicalnumberofrows(); //获取第一行 row = sheet.getrow(0); //获取最大列数 int colnum = row.getphysicalnumberofcells(); for (int i = 1; i<rownum; i++) { map<string,string> map = new linkedhashmap<string,string>(); row = sheet.getrow(i); if(row !=null){ for (int j=0;j<colnum;j++){ celldata = (string) getcellformatvalue(row.getcell(j)); map.put(columns[j], celldata); } }else{ break; } list.add(map); } } //遍历解析出来的list for (map<string,string> map : list) { for (entry<string,string> entry : map.entryset()) { system.out.print(entry.getkey()+":"+entry.getvalue()+","); } system.out.println(); } } //读取excel public static workbook readexcel(string filepath){ workbook wb = null; if(filepath==null){ return null; } string extstring = filepath.substring(filepath.lastindexof(".")); inputstream is = null; try { is = new fileinputstream(filepath); if(".xls".equals(extstring)){ return wb = new hssfworkbook(is); }else if(".xlsx".equals(extstring)){ return wb = new xssfworkbook(is); }else{ return wb = null; } } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } return wb; } public static object getcellformatvalue(cell cell){ object cellvalue = null; if(cell!=null){ //判断cell类型 switch(cell.getcelltype()){ case cell.cell_type_numeric:{ cellvalue = string.valueof(cell.getnumericcellvalue()); break; } case cell.cell_type_formula:{ //判断cell是否为日期格式 if(dateutil.iscelldateformatted(cell)){ //转换为日期格式yyyy-mm-dd cellvalue = cell.getdatecellvalue(); }else{ //数字 cellvalue = string.valueof(cell.getnumericcellvalue()); } break; } case cell.cell_type_string:{ cellvalue = cell.getrichstringcellvalue().getstring(); break; } default: cellvalue = ""; } }else{ cellvalue = ""; } return cellvalue; } }
四、运行结果
代码运行前保证在d盘下有一个test.xlsx文档,不然报文件找不到异常;excel文档中的表头要和代码中的string columns[] = {"name","age","score"}
对应起来。
总结
以上所述是小编给大家介绍的java解析excel的方法(xls、xlsx两种格式),希望对大家有所帮助
推荐阅读
-
java解析Excel的方法(xls、xlsx两种格式)
-
POI通用导出Excel(.xls,.xlsx)的方法
-
Java读取、写入Excel全版本(包含xls、xslx格式)通用方法及代码展示(POI)
-
java解析Excel的方法(xls、xlsx两种格式)
-
Java读取、写入Excel全版本(包含xls、xslx格式)通用方法及代码展示(POI)
-
Python读取txt内容写入xls格式excel中的方法
-
javascript将url解析为json格式的两种方法
-
java导入Excel包含多张sheet表的.xls .xslx .txt三种后缀格式的文件
-
java导入Excel包含多张sheet表的.xls .xslx .txt三种后缀格式的文件
-
Android EXCEL 解析 xls 和 xlsx,方法其实很简单