From 5d91a329768a2a86e01e4b9b6bc6a2b939b87adb Mon Sep 17 00:00:00 2001
From: fei <791364011@qq.com>
Date: 星期五, 16 一月 2026 22:48:51 +0800
Subject: [PATCH] 修改了对应代码

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtilManySheetFour.java |  129 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 105 insertions(+), 24 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtilManySheetFour.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtilManySheetFour.java
index 20cfed5..772777f 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtilManySheetFour.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtilManySheetFour.java
@@ -307,7 +307,6 @@
                 int column = 0;
                 if(index == 0) {
                     // 鍚堝苟绗竴琛岀殑鍓�5涓崟鍏冩牸
-                    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8));
 
                     // 蹇呴』鍏堣缃负true
                     // 椤甸潰甯冨眬璁剧疆
@@ -323,7 +322,7 @@
 
                     // 鍏朵粬鎵撳嵃璁剧疆
                     printSetup.setPaperSize(PrintSetup.A4_PAPERSIZE);  // A4绾�
-                    printSetup.setLandscape(false);  // 绾靛悜鎵撳嵃
+                    printSetup.setLandscape(true);  // 绾靛悜鎵撳嵃
 
 
                     // 鍒涘缓琛屽苟璁剧疆楂樺害
@@ -333,33 +332,49 @@
                     {
                         row.setHeight((short)(55.8 * 20));
 
-                        Cell cell = row.createCell(6);
+                        Cell cell = row.createCell(0);
+//                        for(int cl = 1 ; cl <=8; cl++)
+//                            cell = row.createCell(cl);
+//
+//
+//                        for (int col = 4; col <= 7; col++) {
+//                            row.getSheet().setColumnWidth(col, 15 * 256); // 姣忓垪15瀛楃瀹�
+                //        }
+
+                        int margin = -40* 9525;
+                        int mary = -11 * 9525;
+                        XSSFClientAnchor anchor = new XSSFClientAnchor(
+                                0,          // dx1
+                                0,          // dy1
+                                margin,     // dx2锛氬彸杈圭晫宸︾Щ10鍍忕礌
+                                mary,          // dy2
+                                (short)5,   // col1
+                                0,          // row1
+                                (short)9,   // col2
+                                1          // row2
+                        );
                         // 璁剧疆鍥剧墖澶у皬鍜屼綅缃�
-                        ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) (cell.getColumnIndex()+1), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() +2),
-                                cell.getRow().getRowNum() + 1);
+                     //   ClientAnchor anchor = new XSSFClientAnchor(0, 0, 600, 150, (short)0, 0, (short)6, 1);
+                    //   anchor.setDx2(488);
+                    //   anchor.setDy2(10);
+                   //     anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
                         // 璁$畻灞呬腑浣嶇疆
-//                    int col1 = 0; // 涓棿鍒�
-//                    int col2 = col1 + 2;
-//                    anchor.setCol1(col1);
-//                    anchor.setCol2(col2);
-//                    anchor.setDx1(100);
-//                    anchor.setDy1(0);
-//                    anchor.setDx2(255); // 瀹藉害
-//                    anchor.setDy2(255); // 楂樺害
-                        anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
+
+
                         // 璁$畻灞呬腑浣嶇疆
-                        int col1 = 4; // 涓棿鍒�
-                        int col2 = col1 + 3;
-                        anchor.setCol1(col1);
-                        anchor.setCol2(col2);
-                        anchor.setRow1(0);
-                        anchor.setRow2(1);
+//                        int col1 = 4; // 涓棿鍒�
+//                        int col2 = col1 + 3;
+//                        anchor.setCol1(col1);
+//                        anchor.setCol2(col2);
+//                        anchor.setRow1(0);
+//                        anchor.setRow2(1);
+
                         byte[] data = bt;
                  
                         // 鑾峰彇鍥剧墖鍘熷灏哄
                         BufferedImage image = ImageIO.read(new ByteArrayInputStream(data));
-                        double widthInEMU = image.getWidth() * 9525 * 0.2;
-                        double heightInEMU = image.getHeight() * 9525;
+//                        double widthInEMU = image.getWidth() * 9525 * 0.2;
+//                        double heightInEMU = image.getHeight() * 9525;
 
                         // 璁剧疆鍥剧墖鍘熷灏哄
                     //    anchor.setDx2(-100000); // 鍘熷瀹藉害
@@ -378,6 +393,7 @@
                     }
                     else
                         row.setHeight((short)(33 * 20));
+                  //  sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8));
 
                     //  sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7));
                     if(firow==1)
@@ -856,7 +872,7 @@
         Cell cell = null;
         try {
             // 璁剧疆琛岄珮涓鸿嚜鍔ㄨ皟鏁�
-            row.setHeight((short) -1);
+           // row.setHeight((short) -1);
             // 鏍规嵁Excel涓缃儏鍐靛喅瀹氭槸鍚﹀鍑�,鏈変簺鎯呭喌闇�瑕佷繚鎸佷负绌�,甯屾湜鐢ㄦ埛濉啓杩欎竴鍒�.
             if (attr.isExport()) {
                 // 鍒涘缓cell
@@ -871,7 +887,13 @@
                 } else if (align == HorizontalAlignment.RIGHT) {
                     styleKey = "data3";
                 }
-                cell.setCellStyle(styles.get(styleKey));
+                // 鑾峰彇骞朵慨鏀规牱寮�
+                CellStyle style = styles.get(styleKey);
+                Workbook workbook = row.getSheet().getWorkbook();
+                CellStyle newStyle = workbook.createCellStyle();
+                newStyle.cloneStyleFrom(style);
+                newStyle.setWrapText(true); // 鍏抽敭锛氬惎鐢ㄨ嚜鍔ㄦ崲琛�
+                cell.setCellStyle(newStyle);
 
                 // 鐢ㄤ簬璇诲彇瀵硅薄涓殑灞炴��
                 Object value = getTargetValue(vo, field, attr);
@@ -888,6 +910,7 @@
                     // 璁剧疆鍒楃被鍨�
                     setCellVo(value, attr, cell);
                 }
+                adjustRowHeightAfterSetValue(row, cell, value);
                 addStatisticsData(column, Convert.toStr(value), attr);
             }
         } catch (Exception e) {
@@ -895,7 +918,65 @@
         }
         return cell;
     }
+    /**
+     * 璁剧疆鍊煎悗璋冩暣琛岄珮
+     */
+    private void adjustRowHeightAfterSetValue(Row row, Cell cell, Object value) {
+        if (value == null) return;
 
+        String text = value.toString();
+        Sheet sheet = row.getSheet();
+
+        // 1. 璁$畻鑷姩楂樺害锛堝熀浜庡唴瀹癸級
+        short autoHeight = calculateSimpleAutoHeight(text, cell);
+
+        // 2. 鑾峰彇褰撳墠琛岄珮
+        short currentHeight = row.getHeight();
+        if (currentHeight == -1) {
+            currentHeight = sheet.getDefaultRowHeight();
+        }
+
+        // 3. 浣跨敤杈冨ぇ鐨勯珮搴︼紙鑷姩璁$畻鐨勯珮搴︽垨褰撳墠楂樺害锛�
+        short baseHeight = (short) Math.max(currentHeight, autoHeight);
+        System.out.println(baseHeight+"aaaaaaaaatttttttt");
+        // 4. 鍦ㄥ熀纭�涓婂鍔犻澶栭珮搴︼紙100鍗曚綅 = 5鐐癸級
+        short extraHeight = 80;
+        short newHeight = (short) (baseHeight + extraHeight);
+
+        // 5. 闄愬埗鏈�澶ч珮搴�
+        short maxHeight = (short) 4000; // 100鐐�
+        row.setHeight((short) Math.min(maxHeight,newHeight));
+    }
+
+    /**
+     * 绠�鍖栫殑鑷姩楂樺害璁$畻
+     */
+    private short calculateSimpleAutoHeight(String text, Cell cell) {
+        if (text == null || text.isEmpty()) return 0;
+
+        Sheet sheet = cell.getSheet();
+        int colIndex = cell.getColumnIndex();
+
+        // 鑾峰彇鍒楀锛堝瓧绗︽暟锛�
+        int colWidthChars = sheet.getColumnWidth(colIndex) / 256;
+        if (colWidthChars <= 0) colWidthChars = 10;
+
+        // 璁$畻鏂囨湰琛屾暟
+        int lines = 1;
+        if (text.contains("\n")) {
+            // 鏈夋樉寮忔崲琛�
+            String[] parts = text.split("\n");
+            for (String part : parts) {
+                lines += Math.max(1, (int) Math.ceil(part.length() * 1.5 / colWidthChars));
+            }
+        } else {
+            // 鑷姩鎹㈣
+            lines = (int) Math.ceil(text.length() * 1.5 / colWidthChars);
+        }
+
+        // 姣忚楂樺害锛氬亣璁�18鐐癸紙360 POI鍗曚綅锛�
+        return (short) (lines * 360);
+    }
     /**
      * 璁剧疆鍗曞厓鏍兼彁绀�
      *

--
Gitblit v1.9.1