Преглед изворни кода

连续检测导出Excel调整

王苗苗 пре 5 месеци
родитељ
комит
c166414119

+ 73 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/business/BusinessController.java

@@ -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:获取设备列表信息