diff --git a/dsAi/src/main/java/com/dsideal/Res/Test/MetadataTemplateGenerator.java b/dsAi/src/main/java/com/dsideal/Res/Test/MetadataTemplateGenerator.java index 188e8cda..96ee7ec3 100644 --- a/dsAi/src/main/java/com/dsideal/Res/Test/MetadataTemplateGenerator.java +++ b/dsAi/src/main/java/com/dsideal/Res/Test/MetadataTemplateGenerator.java @@ -39,9 +39,9 @@ public class MetadataTemplateGenerator { Row headerRow = sheet.createRow(0); headerRow.setHeightInPoints(20); - // 先设置所有列宽为44(原22的两倍) + // 先设置所有列宽为18 for (int i = 0; i < headers.length; i++) { - sheet.setColumnWidth(i, 44 * 256); // 44个字符宽度 + sheet.setColumnWidth(i, 18 * 256); // 18个字符宽度 } // 再创建单元格 @@ -61,17 +61,35 @@ public class MetadataTemplateGenerator { } } - // 设置数据验证(是否为空、是否主键) + // 设置数据验证 DataValidationHelper validationHelper = sheet.getDataValidationHelper(); - DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(new String[]{"是", "否"}); - CellRangeAddressList addressList = new CellRangeAddressList(1, 1000, 5, 6); - DataValidation validation = validationHelper.createValidation(constraint, addressList); - sheet.addValidationData(validation); - // 自动调整列宽 - for (int i = 0; i < headers.length; i++) { - sheet.autoSizeColumn(i); - } + // 1. 数据类型下拉列表(第3列,索引2) + String[] dataTypes = {"INT", "BIGINT", "DECIMAL", "VARCHAR", "CHAR", "TEXT", "DATE", "DATETIME", "BOOLEAN", "FLOAT", "DOUBLE"}; + DataValidationConstraint typeConstraint = validationHelper.createExplicitListConstraint(dataTypes); + CellRangeAddressList typeAddressList = new CellRangeAddressList(1, 1000, 3, 3); // 数据类型列 + DataValidation typeValidation = validationHelper.createValidation(typeConstraint, typeAddressList); + sheet.addValidationData(typeValidation); + + // 2. 数据长度数字验证(第4列,索引3) + DataValidationConstraint lengthConstraint = validationHelper.createNumericConstraint( + DataValidationConstraint.ValidationType.INTEGER, + DataValidationConstraint.OperatorType.GREATER_OR_EQUAL, + "0", + null + ); + CellRangeAddressList lengthAddressList = new CellRangeAddressList(1, 1000, 4, 4); // 长度列 + DataValidation lengthValidation = validationHelper.createValidation(lengthConstraint, lengthAddressList); + lengthValidation.setShowErrorBox(true); + lengthValidation.createErrorBox("输入错误", "请输入有效的数字"); + sheet.addValidationData(lengthValidation); + + // 原有的是否为空、是否主键验证 + DataValidationConstraint yesNoConstraint = validationHelper.createExplicitListConstraint(new String[]{"是", "否"}); + CellRangeAddressList yesNoAddressList = new CellRangeAddressList(1, 1000, 5, 6); + DataValidation yesNoValidation = validationHelper.createValidation(yesNoConstraint, yesNoAddressList); + sheet.addValidationData(yesNoValidation); + // 保存文件 try (FileOutputStream outputStream = new FileOutputStream("c:/元数据采集模板.xlsx")) {