Java利用POI实现导入导出Excel表格示例代码
转自:https://www.jb51.net/article/95526.htm
介绍
Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html
实现
已经在代码中加入了完整的注释。
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelOperate { public static void main(String[] args) { // 创建Excel表格 createExcel(getStudent()); // 读取Excel表格 List<Student> list = readExcel(); System.out.println(list.toString()); } /** * 初始化数据 * * @return 数据 */ private static List<Student> getStudent() { List<Student> list = new ArrayList<Student>(); Student student1 = new Student( "小明" , 8 , "二年级" ); Student student2 = new Student( "小光" , 9 , "三年级" ); Student student3 = new Student( "小花" , 10 , "四年级" ); list.add(student1); list.add(student2); list.add(student3); return list; } /** * 创建Excel * * @param list * 数据 */ private static void createExcel(List<Student> list) { // 创建一个Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个工作表 HSSFSheet sheet = workbook.createSheet( "学生表一" ); // 添加表头行 HSSFRow hssfRow = sheet.createRow( 0 ); // 设置单元格格式居中 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 添加表头内容 HSSFCell headCell = hssfRow.createCell( 0 ); headCell.setCellValue( "姓名" ); headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell( 1 ); headCell.setCellValue( "年龄" ); headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell( 2 ); headCell.setCellValue( "年级" ); headCell.setCellStyle(cellStyle); // 添加数据内容 for ( int i = 0 ; i < list.size(); i++) { hssfRow = sheet.createRow(( int ) i + 1 ); Student student = list.get(i); // 创建单元格,并设置值 HSSFCell cell = hssfRow.createCell( 0 ); cell.setCellValue(student.getName()); cell.setCellStyle(cellStyle); cell = hssfRow.createCell( 1 ); cell.setCellValue(student.getAge()); cell.setCellStyle(cellStyle); cell = hssfRow.createCell( 2 ); cell.setCellValue(student.getGrade()); cell.setCellStyle(cellStyle); } // 保存Excel文件 try { OutputStream outputStream = new FileOutputStream( "D:/students.xls" ); workbook.write(outputStream); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 读取Excel * * @return 数据集合 */ private static List<Student> readExcel() { List<Student> list = new ArrayList<Student>(); HSSFWorkbook workbook = null ; try { // 读取Excel文件 InputStream inputStream = new FileInputStream( "D:/students.xls" ); workbook = new HSSFWorkbook(inputStream); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } // 循环工作表 for ( int numSheet = 0 ; numSheet < workbook.getNumberOfSheets(); numSheet++) { HSSFSheet hssfSheet = workbook.getSheetAt(numSheet); if (hssfSheet == null ) { continue ; } // 循环行 for ( int rowNum = 1 ; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow == null ) { continue ; } // 将单元格中的内容存入集合 Student student = new Student(); HSSFCell cell = hssfRow.getCell( 0 ); if (cell == null ) { continue ; } student.setName(cell.getStringCellValue()); cell = hssfRow.getCell( 1 ); if (cell == null ) { continue ; } student.setAge(( int ) cell.getNumericCellValue()); cell = hssfRow.getCell( 2 ); if (cell == null ) { continue ; } student.setGrade(cell.getStringCellValue()); list.add(student); } } return list; } } |
附上Student类的代码
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
|
public class Student { private String name; private int age; private String grade; public Student() { } public Student(String name, int age, String grade) { super (); this .name = name; this .age = age; this .grade = grade; } public String getName() { return name; } public void setName(String name) { this .name = name; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } public String getGrade() { return grade; } public void setGrade(String grade) { this .grade = grade; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", grade=" + grade + "]" ; } } |
测试结果
导出的Excel表格
students
打印读取的Excel数据
1
|
[Student [name=小明, age= 8 , grade=二年级], Student [name=小光, age= 9 , grade=三年级], Stu |
Java利用POI实现导入导出Excel表格示例代码的更多相关文章
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- Java代码导入导出 Excel 表格最简单的方法
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- PHP导入导出excel表格图片的代码和方法大全
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
- Java IO 导入导出Excel表格
1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...
- java使用freemarker作为模板导出Excel表格
1:首先新建一个excel表格自己弄好格式如下图 2:把excel 表格另存为xml格式文件如下图 3:这个时候的文件就是xml 格式的文件了,在myeclipse里面项目工程里面新建一个文件后缀为. ...
- 使用POI实现数据导出Excel表格
package cn.sh.bzt.kwj.action; import java.io.IOException; import java.io.OutputStream; import java.t ...
- 使用apache的poi实现导入导出excel
1.jar包:poi-3.14-20160307.jar.poi-ooxml-3.14-20160307.jar 2.导入(本例实现了解析excel生成List): @Override public ...
- JAVA 通过POI 模版,导出excel
如有不足,欢迎指正,谢谢 ! 1.Maven引入 POI jar包.模版和结果文件.rar下载 <dependency> <groupId>org.apache.poi< ...
随机推荐
- 带缓存的基于DateTimeFormatter的日期格式化工具类
JAVA中的SimpleDateFormat是非线程安全的,所有在1.8的JDK版本里提供了线程安全的DateTimeFormatter类,由于是线程安全的,故我们可以将此类缓存起来多次利用提高效率. ...
- 破解NFC卡
目录 概念 各种卡 IC卡存储器结构 破解工具 破解NFC卡 概念 各种卡 ID卡 工作在低频(125Khz) ID卡 特点 EM4XX系列,多为EM4100/EM4102卡 常用的固化ID卡,出厂固 ...
- MySQL 设计与开发规范
MySQL 设计与开发规范 1 目的 本规范的主要目的是希望规范数据库设计与开发,尽量避免由于数据库设计与开发不当而产生的麻烦:同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保 ...
- mongo 分片机如何建立库和实例(数据表)
mongo分片创建表和实例 第一步:首先在admin账户下: mongo 'mongodb://root:abcccSRP@s-2ze333323gggg.mongodb.rds.aliyuncs.c ...
- 【大数据】Spark On Yarn
Spark在YARN中有yarn-cluster和yarn-client两种运行模式: I. Yarn client 在yarn-client模式下,Driver运行在Client上,通过Applic ...
- 【PHP】使用phpoffice/phpexcel导入导出数据
本例以thinkphp5.1为例 包地址: https://packagist.org/packages/phpoffice/phpexcel 使用: composer require phpoffi ...
- Juju solutions for OpenStack
Juju solutions for OpenStack Juju makes it easy to deploy OpenStack at scale. Quickly and reliably b ...
- MYSQL --Subquery returns more than 1 row查询结果多于一行
Subquery returns more than 1 row表示子查询返回了多行数据 例如: select * from table1 where table1.colums=(select co ...
- js实现图片资源转化成base64的各种场景
网络上有很多片介绍通过js将图片转换成base64的文章,之所以再写这篇文章的原因时发现没有找到系统的介绍的文章,有的介绍如何实现本地项目的图片转码,有的介绍如何实现网络资源的图片转化,但是系统介绍的 ...
- STL源码剖析——序列式容器#3 Deque
Deque是一种双向开口的连续线性空间.所谓的双向开口,就是能在头尾两端分别做元素的插入和删除,而且是在常数的时间内完成.虽然Vector也可以在首端进行元素的插入和删除(利用insert和erase ...