源代码在个人主页资源中可以下载?
目录
概述
准备
创建工程
引入所需依赖
创建实体类
?代码编写
?执行
概述
我们在公司项目开发中经常会遇到将数据库的记录导出到Excel表中,很多小伙伴私信我说能不能出一个关于导出Excel数据的文章。今天他来了。
准备
创建工程
我们创建一个springboot工程来进行开发,当然了,你想建立一个Maven的普通项目也可以。这里不再赘述。
引入所需依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
创建实体类
?代码编写
public static void ExportOne(List<Student> dataList) throws IllegalAccessException, IOException {
//创建工作簿
SXSSFWorkbook workbook = new SXSSFWorkbook();
//创建sheet页
SXSSFSheet sheet = workbook.createSheet();
//因为有时候Excel的页内数据行数有限制,这里-1的意思就是没有限制行数
sheet.setRandomAccessWindowSize(-1);
Iterator<Student> iterator = dataList.iterator();
//获得对象的属性集合,为的就是在导出的Excel表头也就是第一行可以将其写入
//注:这里的student的属性值都是public,如果是private的,你能够获取所有的属性?
//这里留个小作业自己可以看看,是否对反射能够熟练使用。
Field[] fields = Student.class.getDeclaredFields();
int currentRow = 0;
//遍历传入的数据集合
while (iterator.hasNext()) {
//获取对象
Student student = iterator.next();
//创建Row,也就是Excel表中的行
Row row = sheet.createRow(currentRow);
//遍历fields数组
for (int i = 0; i < fields.length; i++) {
Cell cell = row.createCell(i);
if (currentRow == 0) {
//如果是第一行就将属性的名字写入,也就是我们上面说的Excel表头
cell.setCellValue(fields[i].getName());
} else {
//如果不是第一行就将其对应的数据写入,这里用到了反射的知识哦,不知道你是否还记得哦
cell.setCellValue(String.valueOf(fields[i].get(student)));
}
}
// 遍历一次不要忘记将这个值+1哦
currentRow++;
}
//我们创建一个输出流,这里固定了文件名,开发中可以视情况而定,我们这里就讲文件输出到桌面的poi下的student.xlsx
FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\Summer\\Desktop\\poi\\student.xlsx"));
//调用工作簿的write方法
workbook.write(fos);
}
?执行
执行这个main方法
我们在桌面的文件夹下看到文件
打开文件看看数据吧
?确实是10000行记录,我们模拟数据的时候就模拟了10000行
|