diff --git a/easyexcel-webflux-test/pom.xml b/easyexcel-webflux-test/pom.xml
new file mode 100644
index 00000000..093fda82
--- /dev/null
+++ b/easyexcel-webflux-test/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+ com.alibaba
+ easyexcel-parent
+ 3.2.1
+
+
+ easyexcel-webflux-test
+
+
+ 8
+ 8
+ UTF-8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+ test
+
+
+ com.alibaba
+ easyexcel-core
+ test
+
+
+
+
diff --git a/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/EasyexcelWebfluxApplication.java b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/EasyexcelWebfluxApplication.java
new file mode 100644
index 00000000..5d35211d
--- /dev/null
+++ b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/EasyexcelWebfluxApplication.java
@@ -0,0 +1,15 @@
+package com.alibaba.easyexcel.test.webflux;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @author gxz gongxuanzhangmelt@gmail.com
+ **/
+@SpringBootApplication
+public class EasyexcelWebfluxApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(EasyexcelWebfluxApplication.class, args);
+ }
+}
diff --git a/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/controller/HelloController.java b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/controller/HelloController.java
new file mode 100644
index 00000000..67b7d53a
--- /dev/null
+++ b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/controller/HelloController.java
@@ -0,0 +1,38 @@
+package com.alibaba.easyexcel.test.webflux.controller;
+
+import com.alibaba.easyexcel.test.webflux.service.HelloService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
+
+
+/**
+ * @author gongxuanzhang
+ **/
+@RestController
+public class HelloController {
+
+ @Autowired
+ private HelloService helloService;
+
+ @GetMapping(value = "/download")
+ @ResponseBody
+ public ResponseEntity> exportExcel() {
+ String fileName = "export.xlsx";
+ return ResponseEntity.ok()
+ .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName)
+ .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE)
+ .body(helloService.generateExcel().flatMap(x -> {
+ Resource resource = new InputStreamResource(x);
+ return Mono.just(resource);
+ }));
+ }
+
+}
diff --git a/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/entity/DemoData.java b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/entity/DemoData.java
new file mode 100644
index 00000000..c0b18932
--- /dev/null
+++ b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/entity/DemoData.java
@@ -0,0 +1,21 @@
+package com.alibaba.easyexcel.test.webflux.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * @author gongxuanzhang
+ */
+@Data
+public class DemoData {
+ @ExcelProperty("字符串标题")
+ private String string;
+ @ExcelProperty("日期标题")
+ private Date date;
+ @ExcelProperty("数字标题")
+ private Double doubleData;
+}
+
diff --git a/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/service/HelloService.java b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/service/HelloService.java
new file mode 100644
index 00000000..c202ebbb
--- /dev/null
+++ b/easyexcel-webflux-test/src/test/java/com/alibaba/easyexcel/test/webflux/service/HelloService.java
@@ -0,0 +1,45 @@
+package com.alibaba.easyexcel.test.webflux.service;
+
+import com.alibaba.easyexcel.test.webflux.entity.DemoData;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.util.ListUtils;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author gxz gongxuanzhangmelt@gmail.com
+ **/
+@Component
+public class HelloService {
+
+
+ public Mono generateExcel() {
+ return Mono.fromCallable(() -> {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ EasyExcel.write(stream, DemoData.class)
+ .sheet("模板")
+ .doWrite(this::data);
+ return new ByteArrayInputStream(stream.toByteArray());
+ }).subscribeOn(Schedulers.boundedElastic());
+ }
+
+ private List data() {
+ List list = ListUtils.newArrayList();
+ for (int i = 0; i < 10; i++) {
+ DemoData data = new DemoData();
+ data.setString("字符串" + i);
+ data.setDoubleData(1.1);
+ data.setDate(new Date());
+ list.add(data);
+ }
+ return list;
+ }
+
+
+}
diff --git a/pom.xml b/pom.xml
index cceb0f94..c002f060 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,6 +16,7 @@
easyexcel-support
easyexcel-test
easyexcel
+ easyexcel-webflux-test
@@ -152,6 +153,11 @@
spring-boot-starter-web
2.6.3
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+ 2.6.3
+
junit
junit