java的poi技术读取Excel数据
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx。
读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL
你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息
使用JXL技术 :java的jxl技术导入Excel
下面是本文的项目结构:
项目中所需要的jar文件:
所用的Excel数据(2003-2007,2010都是一样的数据)
运行效果:
=================================================
源码部分:
=================================================
/Excel2010/src/com/b510/common/Common.java
1 /**
2 *
3 */
4 package com.b510.common;
5
6 /**
7 * @author Hongten
8 * @created 2014-5-21
9 */
10 public class Common {
11
12 public static final String OFFICE_EXCEL_2003_POSTFIX = "xls";
13 public static final String OFFICE_EXCEL_2010_POSTFIX = "xlsx";
14
15 public static final String EMPTY = "";
16 public static final String POINT = ".";
17 public static final String LIB_PATH = "lib";
18 public static final String STUDENT_INFO_XLS_PATH = LIB_PATH + "/student_info" + POINT + OFFICE_EXCEL_2003_POSTFIX;
19 public static final String STUDENT_INFO_XLSX_PATH = LIB_PATH + "/student_info" + POINT + OFFICE_EXCEL_2010_POSTFIX;
20 public static final String NOT_EXCEL_FILE = " : Not the Excel file!";
21 public static final String PROCESSING = "Processing...";
22
23 }
/Excel2010/src/com/b510/excel/ReadExcel.java
1 /**
2 *
3 */
4 package com.b510.excel;
5
6 import java.io.FileInputStream;
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.util.ArrayList;
10 import java.util.List;
11
12 import org.apache.poi.hssf.usermodel.HSSFCell;
13 import org.apache.poi.hssf.usermodel.HSSFRow;
14 import org.apache.poi.hssf.usermodel.HSSFSheet;
15 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
16 import org.apache.poi.xssf.usermodel.XSSFCell;
17 import org.apache.poi.xssf.usermodel.XSSFRow;
18 import org.apache.poi.xssf.usermodel.XSSFSheet;
19 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
20
21 import com.b510.common.Common;
22 import com.b510.excel.util.Util;
23 import com.b510.excel.vo.Student;
24
25 /**
26 * @author Hongten
27 * @created 2014-5-20
28 */
29 public class ReadExcel {
30
31 /**
32 * read the Excel file
33 * @param path the path of the Excel file
34 * @return
35 * @throws IOException
36 */
37 public List<Student> readExcel(String path) throws IOException {
38 if (path == null || Common.EMPTY.equals(path)) {
39 return null;
40 } else {
41 String postfix = Util.getPostfix(path);
42 if (!Common.EMPTY.equals(postfix)) {
43 if (Common.OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) {
44 return readXls(path);
45 } else if (Common.OFFICE_EXCEL_2010_POSTFIX.equals(postfix)) {
46 return readXlsx(path);
47 }
48 } else {
49 System.out.println(path + Common.NOT_EXCEL_FILE);
50 }
51 }
52 return null;
53 }
54
55 /**
56 * Read the Excel 2010
57 * @param path the path of the excel file
58 * @return
59 * @throws IOException
60 */
61 public List<Student> readXlsx(String path) throws IOException {
62 System.out.println(Common.PROCESSING + path);
63 InputStream is = new FileInputStream(path);
64 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
65 Student student = null;
66 List<Student> list = new ArrayList<Student>();
67 // Read the Sheet
68 for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
69 XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
70 if (xssfSheet == null) {
71 continue;
72 }
73 // Read the Row
74 for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
75 XSSFRow xssfRow = xssfSheet.getRow(rowNum);
76 if (xssfRow != null) {
77 student = new Student();
78 XSSFCell no = xssfRow.getCell(0);
79 XSSFCell name = xssfRow.getCell(1);
80 XSSFCell age = xssfRow.getCell(2);
81 XSSFCell score = xssfRow.getCell(3);
82 student.setNo(getValue(no));
83 student.setName(getValue(name));
84 student.setAge(getValue(age));
85 student.setScore(Float.valueOf(getValue(score)));
86 list.add(student);
87 }
88 }
89 }
90 return list;
91 }
92
93 /**
94 * Read the Excel 2003-2007
95 * @param path the path of the Excel
96 * @return
97 * @throws IOException
98 */
99 public List<Student> readXls(String path) throws IOException {
100 System.out.println(Common.PROCESSING + path);
101 InputStream is = new FileInputStream(path);
102 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
103 Student student = null;
104 List<Student> list = new ArrayList<Student>();
105 // Read the Sheet
106 for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
107 HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
108 if (hssfSheet == null) {
109 continue;
110 }
111 // Read the Row
112 for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
113 HSSFRow hssfRow = hssfSheet.getRow(rowNum);
114 if (hssfRow != null) {
115 student = new Student();
116 HSSFCell no = hssfRow.getCell(0);
117 HSSFCell name = hssfRow.getCell(1);
118 HSSFCell age = hssfRow.getCell(2);
119 HSSFCell score = hssfRow.getCell(3);
120 student.setNo(getValue(no));
121 student.setName(getValue(name));
122 student.setAge(getValue(age));
123 student.setScore(Float.valueOf(getValue(score)));
124 list.add(student);
125 }
126 }
127 }
128 return list;
129 }
130
131 @SuppressWarnings("static-access")
132 private String getValue(XSSFCell xssfRow) {
133 if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {
134 return String.valueOf(xssfRow.getBooleanCellValue());
135 } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {
136 return String.valueOf(xssfRow.getNumericCellValue());
137 } else {
138 return String.valueOf(xssfRow.getStringCellValue());
139 }
140 }
141
142 @SuppressWarnings("static-access")
143 private String getValue(HSSFCell hssfCell) {
144 if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
145 return String.valueOf(hssfCell.getBooleanCellValue());
146 } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
147 return String.valueOf(hssfCell.getNumericCellValue());
148 } else {
149 return String.valueOf(hssfCell.getStringCellValue());
150 }
151 }
152 }
/Excel2010/src/com/b510/excel/client/Client.java
1 /**
2 *
3 */
4 package com.b510.excel.client;
5
6 import java.io.IOException;
7 import java.util.List;
8
9 import com.b510.common.Common;
10 import com.b510.excel.ReadExcel;
11 import com.b510.excel.vo.Student;
12
13 /**
14 * @author Hongten
15 * @created 2014-5-21
16 */
17 public class Client {
18
19 public static void main(String[] args) throws IOException {
20 String excel2003_2007 = Common.STUDENT_INFO_XLS_PATH;
21 String excel2010 = Common.STUDENT_INFO_XLSX_PATH;
22 // read the 2003-2007 excel
23 List<Student> list = new ReadExcel().readExcel(excel2003_2007);
24 if (list != null) {
25 for (Student student : list) {
26 System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore());
27 }
28 }
29 System.out.println("======================================");
30 // read the 2010 excel
31 List<Student> list1 = new ReadExcel().readExcel(excel2010);
32 if (list1 != null) {
33 for (Student student : list1) {
34 System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore());
35 }
36 }
37 }
38 }
/Excel2010/src/com/b510/excel/util/Util.java
1 /**
2 *
3 */
4 package com.b510.excel.util;
5
6 import com.b510.common.Common;
7
8 /**
9 * @author Hongten
10 * @created 2014-5-21
11 */
12 public class Util {
13
14 /**
15 * get postfix of the path
16 * @param path
17 * @return
18 */
19 public static String getPostfix(String path) {
20 if (path == null || Common.EMPTY.equals(path.trim())) {
21 return Common.EMPTY;
22 }
23 if (path.contains(Common.POINT)) {
24 return path.substring(path.lastIndexOf(Common.POINT) + 1, path.length());
25 }
26 return Common.EMPTY;
27 }
28 }
/Excel2010/src/com/b510/excel/vo/Student.java
1 /**
2 *
3 */
4 package com.b510.excel.vo;
5
6 /**
7 * Student
8 *
9 * @author Hongten
10 * @created 2014-5-18
11 */
12 public class Student {
13 /**
14 * id
15 */
16 private Integer id;
17 /**
18 * 学号
19 */
20 private String no;
21 /**
22 * 姓名
23 */
24 private String name;
25 /**
26 * 学院
27 */
28 private String age;
29 /**
30 * 成绩
31 */
32 private float score;
33
34 public Integer getId() {
35 return id;
36 }
37
38 public void setId(Integer id) {
39 this.id = id;
40 }
41
42 public String getNo() {
43 return no;
44 }
45
46 public void setNo(String no) {
47 this.no = no;
48 }
49
50 public String getName() {
51 return name;
52 }
53
54 public void setName(String name) {
55 this.name = name;
56 }
57
58 public String getAge() {
59 return age;
60 }
61
62 public void setAge(String age) {
63 this.age = age;
64 }
65
66 public float getScore() {
67 return score;
68 }
69
70 public void setScore(float score) {
71 this.score = score;
72 }
73
74 }
java的poi技术读取Excel数据的更多相关文章
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java的poi技术写Excel的Sheet
在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-20 ...
- java的poi技术读取和导入Excel实例
本篇文章主要介绍了java的poi技术读取和导入Excel实例,报表输出是Java应用开发中经常涉及的内容,有需要的可以了解一下. 报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用 ...
- java的poi技术读取和导入Excel
项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html 用到的Excel文件: http://www.cnblogs.com/h ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- java 使用POI批量导入excel数据
一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...
- Java使用poi包读取Excel文档
项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org. ...
随机推荐
- MFC 消息映射表和虚函数实现消息映射到底谁的效率高
深入浅出MFC对于虚函数实现方式的缺点,它指出:虚函数耗费大量内存,系统最终将被这些额外负担拖垮. 但是现在对于容量巨大的白菜价格的内存来说,这种额外负担是否已经过时了呢~? 书中提到,虚函数表 ...
- LinQ实战学习笔记(一) LINQ to (Objects, XML, SQL) 入门初步
LINQ对于笔者来说, 优美而浓缩的代码让人震惊. 研究LINQ就是在艺术化自己的代码. 之前只是走马观花学会了基本的语法, 但是经常在CSDN看到令人惊讶自叹不如的LINQ代码, 还是让人羡慕嫉妒恨 ...
- Unity3D笔记 Collect
一.输入轴 默认输入轴: Horizontal 和 Vertical被映射到w, a, s, d键和方向键 Fire1, Fire2, Fire3被分别映射到Ctrl,Option(Alt)和Comm ...
- flask request模块
原文链接: https://blog.csdn.net/u012163234/article/details/53116652 前言 在进行Flask开发中,前端需要发送不同的请求及各种带参数的 ...
- sublime text 3 常见问题总结 pyv8
安装 这个过程下一步下一步就行 激活 在help菜单中选择输入验证码,如下整个都是: ----- BEGIN LICENSE ----- Andrew Weber Single User Licens ...
- JPA的锁机制
JPA 各种实体锁模式的区别 字数2084 阅读304 评论0 喜欢4 为了能够同步访问实体,JPA提供了2种锁机制.这两种机制都可以避免两个事务中的其中一个,在不知情的情况下覆盖另一个事务的数据. ...
- Java Eclipse编译后产生的字节码文件,用DOS命令符怎么打开
在很多初学者刚刚接触eclipse的时候,写完一个代码文件.例如 Demo.java 通过run as a java application生成之后,会产生一个Demo.class. Demo.cla ...
- Spacy 使用
# 前提是必须安装: python -m spacy download ennlp = spacy.load('en')text = u"you are best. it is lemmat ...
- Google词向量word2vec的使用
""" 1.在自然语言处理中常常使用预训练的word2vec,这个预训练的词向量可以使用google的GoogleNews-vectors-negative300.bin ...
- AIX 7命令行weblogic建域流水
$ ./config.shUnable to instantiate GUI, defaulting to console mode. <------------------- Fusion M ...