java解析Excel的方法(xls、xlsx两种格式)

2025-05-29 0 61

一、需要导入的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两种格式)

总结

以上所述是小编给大家介绍的java解析excel的方法(xlsxlsx两种格式),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!

原文链接:https://www.cnblogs.com/hhhshct/p/7255915.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java解析Excel的方法(xls、xlsx两种格式) https://www.kuaiidc.com/111882.html

相关文章

发表评论
暂无评论