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< ...
随机推荐
- linux剪贴板
ubuntu下的用户可以只用apt-get来安装: `sudo apt-get install xclip ` 其他发行版的用户可以选择自己的安装方式,也可以用源码编译安装,xclip项目的主页是:h ...
- Spring @RequestMapping 参数说明
@RequestMapping 参数说明: value: 指定请求的实际地址, 比如 /action/info之类.method: 指定请求的method类型, GET.POST.PUT.DELE ...
- 面试突击(七)——JVM如何加载Java字节码信息的?
声明:本文图片均来自网络,我只是进行了选择,利用一图胜千言的力量来帮助自己快速的回忆相关的知识点 1:先看一下Java类文件的转换过程,如下所示,Java字节码文件是通过类加载子系统来放入JVM的内存 ...
- js开启和关闭页面滚动【亲测有效】
在移动端的页面开发过程中,经常会遇到点击弹框禁止页面滚动的情景,下面就来说下具体的做法... 第一步:构建一个函数 function bodyScroll(event){ event.preventD ...
- LeetCode 559. Maximum Depth of N-ary Tree(N-Tree的深度)
Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longe ...
- Bladex之Arhcer代码生成器
代码生成器配置: 数据库表准备:Archer中增加对应的表:(参照test_notice和test_notice_list表)主表:SET FOREIGN_KEY_CHECKS=0; -- ----- ...
- Python - Django - form 组件动态从数据库取 choices 数据
app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...
- TCP报文结构
来自:https://blog.csdn.net/qq_32998153/article/details/79680704
- 阿里云k8s事件监控
事件监控是Kubernetes中的另一种监控方式,可以弥补资源监控在实时性.准确性和场景上的缺欠.Kubernetes的架构设计是基于状态机的,不同的状态之间进行转换则会生成相应的事件,正常的状态之间 ...
- vue获取不到后端返回的响应头
Response.ContentType = EPPlusHelpler.ExcelContentType; Response.Headers.Add("FileName", fi ...