springBoot中JavaPOI的导入和导出

                                                                         ** ## Java使用POI导出excel **

maven导入的poi得包

org.apache.poi

poi

3.12

2创建excel工作簿

Workbook wb = new HSSFWorkbook();

解释:该方法相当于新建了一个excel文件,HSSFWorkbook : excel的文档对象。

3创建第一个sheet(页),命名为 page1

Sheet sheet = wb.createSheet(“page1”);

解释:该方法相当于在excel文件里新建了一个工作页,HSSFSheet : excel文件的表单页

4// 在页sheet上,创建一行

Row row = sheet.createRow((short) 0);

// 在row行上创建一个方格

Cell cell = row.createCell(0);

5//设置方格的显示

cell.setCellValue(1);

6//在单元格中写入内容

row.createCell(1).setCellValue(“我在第一格”);

row.createCell(2).setCellValue(2.2);

row.createCell(3).setCellValue(true);

7//创建一个文件 命名为workbook.xls

FileOutputStream fileOut = new FileOutputStream(“workbook.xls”);// 把上面创建的工作簿输出到文件中

wb.write(fileOut);//关闭输出流

                                    ** ## Java使用POI导入excel **

1

org.apache.poi

poi

3.12

2//创建要读入的文件的输入流

InputStream inp = new FileInputStream(“workbook.xls”);

3//根据上述创建的输入流 创建工作簿对象

Workbook wb = new HSSFWorkbook(inp);

4//得到第一页 sheet

//页Sheet是从0开始索引的

Sheet sheet = wb.getSheetAt(0);

5//利用foreach循环 遍历sheet中的所有行

for (Row row : sheet) {

//遍历row中的所有方格

for (Cell cell : row) {

   //输出方格中的内容,以空格间隔

   System.out.print(cell.toString() + "  ");

}

//每一个行输出之后换行

System.out.println();

}

小结:导入和导出的pox文件的dependency是相同的,不管是引入还是导出用一个这个就OK

示例代码:

首先创建一个po对象

package entity;

public class Student {
private int no;
private String name;
private int age;
private String grage;
public Student(int no, String name, int age, String grage) {
super();
this.no = no;
this.name = name;
this.age = age;
this.grage = grage;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
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 getGrage() {
return grage;
}
public void setGrage(String grage) {
this.grage = grage;
}

}

2实现导出的功能:

1 package demo;
2
3 import java.io.FileOutputStream;
4 import java.io.IOException;
5 import java.sql.SQLException;
6 import java.util.ArrayList;
7 import java.util.Date;
8 import java.util.List;
9
10 import org.apache.poi.hssf.usermodel.HSSFCell;
11 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
12 import org.apache.poi.hssf.usermodel.HSSFDataFormat;
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.hssf.util.Region;
17 import org.apache.poi.ss.usermodel.Font;
18
19 import entity.Student;
20
21 public class Export_demo {
22 public static void main(String[] args) {
23 export();
24 }
25
26 public static void export(){
27 List studens=new ArrayList();
28 for (int i = 1; i <=20; i++) {
29 Student s=new Student(i, “a”+i, 20+i-20, “三年级”);
30 studens.add(s);
31 }
32
33 HSSFWorkbook wb = new HSSFWorkbook();//创建一个excel文件
34 HSSFSheet sheet=wb.createSheet(“学生信息”);//创建一个工作薄
35 sheet.setColumnWidth((short)3, 20* 256); //—》设置单元格宽度,因为一个单元格宽度定了那么下面多有的单元格高度都确定了所以这个方法是sheet的
36 sheet.setColumnWidth((short)4, 20* 256); //—>第一个参数是指哪个单元格,第二个参数是单元格的宽度
37 sheet.setDefaultRowHeight((short)300); // ---->有得时候你想设置统一单元格的高度,就用这个方法
38 HSSFDataFormat format= wb.createDataFormat(); //—>单元格内容格式
39 HSSFRow row1 = sheet.createRow(0); //—>创建一行
40 // 四个参数分别是:起始行,起始列,结束行,结束列 (单个单元格)
41 sheet.addMergedRegion(new Region(0, (short) 0, 0, (short)5));//可以有合并的作用
42 HSSFCell cell1 = row1.createCell((short)0); //—>创建一个单元格
43 cell1.setCellValue(“学生信息总览”);
44
45
46 sheet.addMergedRegion(new Region(1, (short) 0, 1, (short)0));
47 HSSFRow row2= sheet.createRow(1); 创建第二列 标题
48 HSSFCell fen = row2.createCell((short)0); //—>创建一个单元格
49 fen.setCellValue("编号/属性 ");
50 HSSFCell no = row2.createCell((short)1); //—>创建一个单元格
51 no.setCellValue("姓名 ");
52 HSSFCell age = row2.createCell((short)2); //—>创建一个单元格
53 age.setCellValue("年龄 ");
54 HSSFCell grage = row2.createCell((short)3); //—>创建一个单元格
55 grage.setCellValue("年级 ");
56
57 for (int i = 0; i <studens .size(); i++) {
58 sheet.addMergedRegion(new Region(1+i+1, (short) 0, 1+i+1, (short)0));
59 HSSFRow rows= sheet.createRow(1+i+1); 创建第二列 标题
60 HSSFCell fens = rows.createCell((short)0); //—>创建一个单元格
61 fens.setCellValue(studens.get(i).getNo());
62 HSSFCell nos = rows.createCell((short)1); //—>创建一个单元格
63 nos.setCellValue(studens.get(i).getName());
64 HSSFCell ages = rows.createCell((short)2); //—>创建一个单元格
65 ages.setCellValue(studens.get(i).getAge());
66 HSSFCell grages = rows.createCell((short)3); //—>创建一个单元格
67 grages.setCellValue(studens.get(i).getGrage());
68 }
69 FileOutputStream fileOut = null;
70 try{
71 fileOut = new FileOutputStream(“d:\studens.xls”);
72 wb.write(fileOut);
73 //fileOut.close();
74 System.out.print(“OK”);
75 }catch(Exception e){
76 e.printStackTrace();
77 }
78 finally{
79 if(fileOut != null){
80 try {
81 fileOut.close();
82 } catch (IOException e) {
83 // TODO Auto-generated catch block
84 e.printStackTrace();
85 }
86 }
87 }
88 }
89 }

导入Excel步骤:

org.apache.poi

poi

3.12

//创建要读入的文件的输入流

InputStream inp = new FileInputStream(“workbook.xls”);

//根据上述创建的输入流 创建工作簿对象

Workbook wb = new HSSFWorkbook(inp);

//得到第一页 sheet

//页Sheet是从0开始索引的

Sheet sheet = wb.getSheetAt(0);

//利用foreach循环 遍历sheet中的所有行

for (Row row : sheet) {

//遍历row中的所有方格

for (Cell cell : row) {

   //输出方格中的内容,以空格间隔

   System.out.print(cell.toString() + "  ");

}

//每一个行输出之后换行

System.out.println();

}
导入Excel示例代码:
public List loadScoreInfo(String xlsPath) throws IOException{
List temp = new ArrayList();
FileInputStream fileIn = new FileInputStream(xlsPath);
//根据指定的文件输入流导入Excel从而产生Workbook对象
Workbook wb0 = new HSSFWorkbook(fileIn);
//获取Excel文档中的第一个表单
Sheet sht0 = wb0.getSheetAt(0);
//对Sheet中的每一行进行迭代
for (Row r : sht0) {
//如果当前行的行号(从0开始)未达到2(第三行)则从新循环
If(r.getRowNum()<1){
continue;
}
//创建实体类
ScoreInfo info=new ScoreInfo();
//取出当前行第1个单元格数据,并封装在info实体stuName属性上
info.setStuName(r.getCell(0).getStringCellValue());
info.setClassName(r.getCell(1).getStringCellValue());
info.setRscore(r.getCell(2).getNumericCellValue());
info.setLscore(r.getCell(3).getNumericCellValue());
temp.add(info);
}
fileIn.close();
return temp;
}
复制代码

实现Excel导入导出,需要用到POI库。下面介绍一下使用SpringBoot集成MyBatis和POI实现Excel导入导出的步骤。 1. 引入依赖 在pom.xml文件添加以下依赖: ``` <!-- SpringBoot MyBatis 依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!-- POI 依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> ``` 2. 创建实体类 创建一个实体类,用于映射Excel文件的数据。 ```java public class User { private Integer id; private String name; private String email; private String phone; // 省略 getter 和 setter 方法 } ``` 3. 创建Mapper 创建一个Mapper,用于操作数据库。 ```java @Mapper public interface UserMapper { List<User> findAll(); void insert(User user); void batchInsert(List<User> userList); } ``` 4. 创建Service 创建一个Service,用于导入导出Excel文件。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> findAll() { return userMapper.findAll(); } public void insert(User user) { userMapper.insert(user); } public void batchInsert(MultipartFile file) throws IOException { List<User> userList = readExcel(file); userMapper.batchInsert(userList); } public void exportExcel(HttpServletResponse response) throws IOException { List<User> userList = userMapper.findAll(); writeExcel(response, userList); } private List<User> readExcel(MultipartFile file) throws IOException { List<User> userList = new ArrayList<>(); Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); User user = new User(); user.setName(row.getCell(0).getStringCellValue()); user.setEmail(row.getCell(1).getStringCellValue()); user.setPhone(row.getCell(2).getStringCellValue()); userList.add(user); } return userList; } private void writeExcel(HttpServletResponse response, List<User> userList) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Users"); Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("Name"); headerRow.createCell(1).setCellValue("Email"); headerRow.createCell(2).setCellValue("Phone"); for (int i = 0; i < userList.size(); i++) { Row row = sheet.createRow(i + 1); User user = userList.get(i); row.createCell(0).setCellValue(user.getName()); row.createCell(1).setCellValue(user.getEmail()); row.createCell(2).setCellValue(user.getPhone()); } response.setHeader("Content-Disposition", "attachment; filename=users.xlsx"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); workbook.write(response.getOutputStream()); } } ``` 5. 创建Controller 创建一个Controller,用于接收导入导出Excel文件的请求。 ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users") public List<User> findAll() { return userService.findAll(); } @PostMapping("/users") public void insert(@RequestBody User user) { userService.insert(user); } @PostMapping("/users/import") public void batchInsert(@RequestParam("file") MultipartFile file) throws IOException { userService.batchInsert(file); } @GetMapping("/users/export") public void exportExcel(HttpServletResponse response) throws IOException { userService.exportExcel(response); } } ``` 至此,就完成了SpringBoot集成MyBatis和POI实现Excel导入导出的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值