easyexcel多sheet导出
时间: 2023-05-29 22:07:57 浏览: 271
1. 创建工作簿对象
首先,我们需要创建一个工作簿对象,使用EasyExcel提供的WorkbookFactory工具类创建。代码如下:
```java
// 创建工作簿对象
Workbook workbook = WorkbookFactory.create(true);
```
参数true表示创建的工作簿对象为XSSFWorkbook,如果需要创建HSSFWorkbook对象,可以将参数改为false。
2. 创建Sheet对象
接下来,我们需要创建Sheet对象,使用工作簿对象的createSheet方法创建。代码如下:
```java
// 创建Sheet对象
Sheet sheet1 = workbook.createSheet("Sheet1");
Sheet sheet2 = workbook.createSheet("Sheet2");
```
3. 写入数据
有了Sheet对象,我们就可以向其中写入数据了。EasyExcel提供了多种写入数据的方式,这里介绍一种常用的方式,即使用WriteSheet类。
首先,我们需要定义一个数据列表,用于存储要写入的数据。代码如下:
```java
// 定义数据列表
List<List<String>> data1 = new ArrayList<>();
List<List<String>> data2 = new ArrayList<>();
// 向数据列表中添加数据
List<String> row1 = new ArrayList<>();
row1.add("姓名");
row1.add("年龄");
row1.add("性别");
data1.add(row1);
List<String> row2 = new ArrayList<>();
row2.add("张三");
row2.add("20");
row2.add("男");
data1.add(row2);
List<String> row3 = new ArrayList<>();
row3.add("李四");
row3.add("22");
row3.add("女");
data1.add(row3);
List<String> row4 = new ArrayList<>();
row4.add("王五");
row4.add("25");
row4.add("男");
data2.add(row4);
List<String> row5 = new ArrayList<>();
row5.add("赵六");
row5.add("28");
row5.add("女");
data2.add(row5);
```
然后,我们需要创建WriteSheet对象,将数据列表和Sheet对象传入其中。代码如下:
```java
// 创建WriteSheet对象
WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "Sheet1").head(row1).build();
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "Sheet2").head(row4).build();
// 向Sheet中写入数据
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data1);
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data2);
```
其中,第一个参数0和1表示Sheet的索引,第二个参数"Sheet1"和"Sheet2"表示Sheet的名称,head方法用于指定Sheet的表头行。最后,我们使用doWrite方法将数据写入Sheet中。
4. 导出数据
有了数据和Sheet对象,我们就可以将数据导出为Excel文件了。EasyExcel提供了多种导出方式,这里介绍一种常用的方式,即使用EasyExcel的write方法。
首先,我们需要定义一个输出流,用于将数据写入Excel文件。代码如下:
```java
// 定义输出流
OutputStream outputStream = new FileOutputStream("test.xlsx");
```
然后,我们需要指定导出的模板文件,使用EasyExcel提供的类路径资源加载器将模板文件加载为输入流。代码如下:
```java
// 指定模板文件
InputStream templateInputStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("template.xlsx");
```
最后,我们使用EasyExcel的write方法将数据导出为Excel文件。代码如下:
```java
// 导出数据为Excel文件
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data1);
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data2);
```
完整代码如下:
```java
// 定义数据列表
List<List<String>> data1 = new ArrayList<>();
List<List<String>> data2 = new ArrayList<>();
// 向数据列表中添加数据
List<String> row1 = new ArrayList<>();
row1.add("姓名");
row1.add("年龄");
row1.add("性别");
data1.add(row1);
List<String> row2 = new ArrayList<>();
row2.add("张三");
row2.add("20");
row2.add("男");
data1.add(row2);
List<String> row3 = new ArrayList<>();
row3.add("李四");
row3.add("22");
row3.add("女");
data1.add(row3);
List<String> row4 = new ArrayList<>();
row4.add("王五");
row4.add("25");
row4.add("男");
data2.add(row4);
List<String> row5 = new ArrayList<>();
row5.add("赵六");
row5.add("28");
row5.add("女");
data2.add(row5);
// 定义输出流
OutputStream outputStream = new FileOutputStream("test.xlsx");
// 指定模板文件
InputStream templateInputStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("template.xlsx");
// 创建工作簿对象
Workbook workbook = WorkbookFactory.create(true);
// 创建Sheet对象
Sheet sheet1 = workbook.createSheet("Sheet1");
Sheet sheet2 = workbook.createSheet("Sheet2");
// 创建WriteSheet对象
WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "Sheet1").head(row1).build();
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "Sheet2").head(row4).build();
// 向Sheet中写入数据
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data1);
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data2);
// 导出数据为Excel文件
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data1);
EasyExcel.write(outputStream).withTemplate(templateInputStream)
.sheet().doWrite(data2);
// 关闭输出流
outputStream.close();
```
以上就是使用EasyExcel实现多Sheet导出的方法。
阅读全文