时间:2021-05-02
一、需要导入的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,对应一个单元格。
三、代码如下
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 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两种格式),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/hhhshct/p/7255915.html
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
.xls格式Office2003及以下版本.xlsx格式 Office2007及以上版本.csv格式以逗号分隔的字符串文本(可以将上述两种文件类型另存为此格式
由于xlwt目前只支持xls格式,至于xlsx格式,后面会继续更新importxlwtimportcodecsdefTxt_to_Excel(inputTxt,
python操作excel主要用到xlrd和xlwt这两个库,xlrd读取excel表格数据,支持xlsx和xls格式的excel表格;xlwt写入excel表
excel默认保存的文件名有两种情况,分别是:2007版以下的,默认Book1.xls;2007版以上的(包含2007版),默认Book1.xlsx。 文件名
应该如何在Excel中使xlsx文件快速转换为xls文件?在工作中,我们会经常遇到xlsx格式的文件,在Excel2003中是无法打开它们的,有没有什么办法使x