|
@@ -33,6 +33,7 @@ import sun.misc.CharacterEncoder;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
@@ -434,7 +435,7 @@ public class BusinessController extends BaseController {
|
|
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
|
|
|
// 使用 EasyExcel 填充模板并写入到输出流中
|
|
|
- EasyExcel.write(outputStream, Object.class)
|
|
|
+ EasyExcel.write(outputStream)
|
|
|
// .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 可选:自动调整列宽
|
|
|
// 动态头
|
|
|
.head(headers)
|
|
@@ -460,6 +461,77 @@ public class BusinessController extends BaseController {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ // 自定义数据模型
|
|
|
+ static class CustomData {
|
|
|
+ private String header1;
|
|
|
+ private String header2;
|
|
|
+ private Integer header3;
|
|
|
+
|
|
|
+ // Getters and Setters
|
|
|
+ public String getHeader1() {
|
|
|
+ return header1;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setHeader1(String header1) {
|
|
|
+ this.header1 = header1;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getHeader2() {
|
|
|
+ return header2;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setHeader2(String header2) {
|
|
|
+ this.header2 = header2;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getHeader3() {
|
|
|
+ return header3;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setHeader3(Integer header3) {
|
|
|
+ this.header3 = header3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/downloadCustomExcel")
|
|
|
+ public ResponseEntity<InputStreamResource> downloadCustomExcel() throws IOException {
|
|
|
+ // 准备数据
|
|
|
+ List<CustomData> dataList = new ArrayList<>();
|
|
|
+ CustomData data1 = new CustomData();
|
|
|
+ data1.setHeader1("Data1-Header1");
|
|
|
+ data1.setHeader2("Data1-Header2");
|
|
|
+ data1.setHeader3(123);
|
|
|
+ dataList.add(data1);
|
|
|
+
|
|
|
+ CustomData data2 = new CustomData();
|
|
|
+ data2.setHeader1("Data2-Header1");
|
|
|
+ data2.setHeader2("Data2-Header2");
|
|
|
+ data2.setHeader3(456);
|
|
|
+ dataList.add(data2);
|
|
|
+
|
|
|
+ // 使用 ByteArrayOutputStream 来捕获 Excel 生成的输出
|
|
|
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
+
|
|
|
+ // 自定义表头和内容,并写入到输出流中
|
|
|
+ EasyExcel.write(outputStream, CustomData.class)
|
|
|
+ .sheet("Sheet1")
|
|
|
+ .doWrite(dataList);
|
|
|
+
|
|
|
+ // 转换 ByteArrayOutputStream 到 ByteArrayInputStream
|
|
|
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
|
|
|
+
|
|
|
+ // 设置 HTTP 响应头
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
+ headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=custom_excel.xlsx");
|
|
|
+ headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
|
|
+
|
|
|
+ // 返回 ResponseEntity
|
|
|
+ return ResponseEntity.ok()
|
|
|
+ .headers(headers)
|
|
|
+ .body(new InputStreamResource(inputStream));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
* 接口10:获取设备列表信息
|