|
|
@@ -169,7 +169,7 @@ public class CustomRowWriteHandler implements RowWriteHandler {
|
|
|
}
|
|
|
|
|
|
private String buildRange(int offset, int startRow, int rowCount) {
|
|
|
- char start = (char) ('A' + offset);
|
|
|
+ String start = Hex26.toHex26(startRow);
|
|
|
return "$" + start + "$" + startRow + ":$" + start + "$" + (startRow + rowCount - 1);
|
|
|
}
|
|
|
|
|
|
@@ -258,4 +258,30 @@ public class CustomRowWriteHandler implements RowWriteHandler {
|
|
|
private CellRangeAddressList createColumnCellRange(int column){
|
|
|
return new CellRangeAddressList(1, ExcelConstant.MAX_ROW,column,column);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ static class Hex26 {
|
|
|
+ // 进制基础值,也可以修改为'a'
|
|
|
+ private final static char A = 'A';
|
|
|
+
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int m = i % 26;
|
|
|
+ char c = (char) (A + m);
|
|
|
+ sb.append(c);
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|