mitao
2025-04-04 d89a42213b4a32535e93185dedf41fe7a7fc1940
medicalWaste-system/src/main/java/com/sinata/system/config/AutoColumnWidthStrategy.java
@@ -20,11 +20,14 @@
        if (needSetWidth) {
            Map<Integer, Integer> maxWidthMap = cache.computeIfAbsent(writeSheetHolder.getSheetNo(), k -> new HashMap<>());
            int columnWidth = calculateWidth(cellDataList, cell, isHead);
            if (columnWidth >= 16) {
                columnWidth = 16;
            }
            if (columnWidth > 0) {
                columnWidth = Math.min(columnWidth, 255); // 最大支持255字符
                if (columnWidth > maxWidthMap.getOrDefault(cell.getColumnIndex(), 0)) {
                    maxWidthMap.put(cell.getColumnIndex(), columnWidth);
                    writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 256);
                    writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 255);
                }
            }
        }
@@ -41,6 +44,8 @@
                    return cellData.getStringValue().getBytes().length;
                case NUMBER:
                    return cellData.getNumberValue().toString().getBytes().length;
                case DATE:
                    return cellData.getDateValue().toString().getBytes().length;
                default:
                    return -1;
            }