|
|
@@ -140,10 +140,8 @@ public class CustomRowWriteHandler implements RowWriteHandler {
|
|
|
firstTime = false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- // 第一级设置DataValidation
|
|
|
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
|
|
|
+ // 第一级设置DataValidation
|
|
|
DataValidationConstraint firstConstraint = dvHelper.createExplicitListConstraint(new ArrayList<String>(cascadeSelectSource.keySet()).toArray(new String[CollectionUtil.size(cascadeSelectSource)]));
|
|
|
CellRangeAddressList firstRangeAddressList = new CellRangeAddressList(1, ExcelConstant.MAX_ROW, cascadeParentIndex , cascadeParentIndex );
|
|
|
DataValidation firstDataValidation = dvHelper.createValidation(firstConstraint, firstRangeAddressList);
|
|
|
@@ -169,7 +167,7 @@ public class CustomRowWriteHandler implements RowWriteHandler {
|
|
|
}
|
|
|
|
|
|
private String buildRange(int offset, int startRow, int rowCount) {
|
|
|
- String start = Hex26.toHex26(startRow);
|
|
|
+ String start = Hex26.toHex26(offset+1);
|
|
|
return "$" + start + "$" + startRow + ":$" + start + "$" + (startRow + rowCount - 1);
|
|
|
}
|
|
|
|
|
|
@@ -262,25 +260,30 @@ public class CustomRowWriteHandler implements RowWriteHandler {
|
|
|
|
|
|
static class Hex26 {
|
|
|
// 进制基础值,也可以修改为'a'
|
|
|
- private final static char A = 'A';
|
|
|
-
|
|
|
+ private final static char A = 'A'-1;
|
|
|
|
|
|
public static String toHex26(int i) {
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- if (i == 0) {
|
|
|
- sb.append(A);
|
|
|
- return sb.toString();
|
|
|
- }
|
|
|
- int divide = i / 26;
|
|
|
- if (divide > 0) {
|
|
|
- for (int j = 0; j < divide; j++) {
|
|
|
- sb.append(A);
|
|
|
+ String result="";
|
|
|
+ while (i>=26){
|
|
|
+ if(i==26){
|
|
|
+ result=result+'Z';
|
|
|
+ i=-1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ int next=i/27;
|
|
|
+ int remain=i%26;
|
|
|
+ if(remain==0){
|
|
|
+ result=result+'Z';
|
|
|
+ }else {
|
|
|
+ result=result+(char)(A+remain);
|
|
|
}
|
|
|
+
|
|
|
+ i=next;
|
|
|
+ }
|
|
|
+ if(i!=-1){
|
|
|
+ result=result+(char)(A+i);
|
|
|
}
|
|
|
- int m = i % 26;
|
|
|
- char c = (char) (A + m);
|
|
|
- sb.append(c);
|
|
|
- return sb.toString();
|
|
|
+ return StrUtil.reverse(result);
|
|
|
}
|
|
|
}
|
|
|
|