mitao
2025-04-07 6c17cac744b3b439e38f6998ce4704c9a01c5dd2
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 >= 17) {
                columnWidth = 17;
            }
            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;
            }