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 }
时间: 2024-12-11 15:06:36

java的poi技术读取Excel数据的相关文章

java的poi技术读取Excel数据到MySQL

这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 :java的jxl技术导入Excel  项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABLE `student_info` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `no` varchar(20) DEFAU

java的poi技术读取Excel[2003-2007,2010]

这篇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都是一

java的poi技术写Excel的Sheet

在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-2007,2010] java的poi技术读取Excel数据到MySQL java的jxl技术导入Excel java的poi技术读取和导入Excel 然而,这篇blog主要内容是关于Excel里面怎样去写Sheet数据. 那么在Excel里面什么叫做Sheet呢?如下图红色框里面的内容就是Excel的

Java的poi技术读取和导入Excel

报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑.Java程序由于其跨平台特性,不能直接操纵Excel.因此,本文探讨一下POI视线Java程序进行Excel的读取和导入. AD:WOT2014:用户标签系统与用户数据化运营培训专场 项目结构: 用到的Excel文件: XlsMain .java 类 //该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版) import java.io.FileInputSt

java 使用POI批量导入excel数据

一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取excel的demo 1.读取文件方法 /** * 读取出filePath中的所有数据信息 * @param filePath excel文件的绝对路径 * */ public static void getDataFromExcel(String filePath) { //String fileP

Java使用poi包读取Excel文档

项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <gr

java poi技术读取到数据库

https://www.cnblogs.com/hongten/p/java_poi_excel.html java的poi技术读取Excel数据到MySQL 这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel 了解到写入Excel的方法信息 使用JXL技术可以在 : java的jxl技术导入Excel 项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 复制代码 1 CREATE T

java自定义jar包读取Excel(包含2003和2007)数据,并举例说明

用java自定义jar包读取excel数据支持excel2007和excel2003 在http://download.csdn.net/detail/u010792467/8079355下载所需要的包 如果需要excel2003和excel2007文件可以去 http://download.csdn.net/detail/u010792467/8072009下载 在http://download.csdn.net/detail/u010792467/8079345下载工程 自定义jar包运用举

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数