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

feat(excel): 更新图片路径收集功能以支持数据参数传递

- 修改collectImagePaths方法签名,添加data参数
- 在collectImagePaths调用中传递data参数
- 更新collectFloatingImages方法以接收data参数
- 实现Illustration字段的JSON解析和工作表匹配逻辑
- 添加图片URL到imagePaths的条件判断和过滤功能
- 支持将未匹配的JSON对象重新存回data中
xuzhancheng пре 4 дана
родитељ
комит
49a5d467d6
1 измењених фајлова са 21 додато и 4 уклоњено
  1. 21 4
      src/main/java/com/grapecity/controller/GrapeCityController.java

+ 21 - 4
src/main/java/com/grapecity/controller/GrapeCityController.java

@@ -53,7 +53,7 @@ public class GrapeCityController {
 
         for (int i = 0; i < workbook.getWorksheets().getCount(); i++) {
             IWorksheet worksheet = workbook.getWorksheets().get(i);
-            collectImagePaths(worksheet, imagePaths);
+            collectImagePaths(worksheet, imagePaths, data);
         }
 
         return new JSONObject().fluentPut("paths", imagePaths);
@@ -117,8 +117,9 @@ public class GrapeCityController {
      *
      * @param worksheet  要遍历的工作表
      * @param imagePaths 用于存储找到的图片路径的集合
+     * @param data
      */
-    private void collectImagePaths(IWorksheet worksheet, Set<String> imagePaths) {
+    private void collectImagePaths(IWorksheet worksheet, Set<String> imagePaths, Map<String, Object> data) {
         // 收集单元格中的背景图片路径
         for (int x = 0; x < worksheet.getRowCount(); x++) {
             for (int y = 0; y < worksheet.getColumnCount(); y++) {
@@ -144,7 +145,7 @@ public class GrapeCityController {
         }
 
         // 收集浮动图片路径
-        collectFloatingImages(worksheet, imagePaths);
+        collectFloatingImages(worksheet, imagePaths, data);
     }
 
     /**
@@ -154,9 +155,25 @@ public class GrapeCityController {
      * @param worksheet  工作表
      * @param imagePaths 图片路径集合
      */
-    private void collectFloatingImages(IWorksheet worksheet, Set<String> imagePaths) {
+    private void collectFloatingImages(IWorksheet worksheet, Set<String> imagePaths, Map<String, Object> data) {
         // 这里可以添加收集浮动图片的逻辑,如果需要的话
         // 目前 pdf 方法中有处理 Illustration 字段,但 filePath 可能不需要
+        if (data.get("Illustration") != null) {
+            String illustration = (String) data.get("Illustration");
+            if (illustration.startsWith("[") && illustration.endsWith("]")) {
+                JSONArray jsonArray = JSON.parseArray(illustration);
+                List<JSONObject> list = new ArrayList<>();
+                for (int k = 0; k < jsonArray.size(); k++) {
+                    JSONObject jsonObject = jsonArray.getJSONObject(k);
+                    if (jsonObject.getString("sheet").equals(worksheet.getName())) {
+                            imagePaths.add(jsonObject.getString("url"));
+                    } else {
+                        list.add(jsonObject);
+                    }
+                }
+                data.put("Illustration", JSON.toJSONString(list));
+            }
+        }
     }
 
     /**