mirror of https://github.com/alibaba/easyexcel
64 lines
1.9 KiB
64 lines
1.9 KiB
package com.alibaba.excel.util; |
|
|
|
import java.util.regex.Pattern; |
|
|
|
/** |
|
* @author jipengfei |
|
*/ |
|
public class PositionUtils { |
|
|
|
private static final Pattern CELL_REF_PATTERN = Pattern.compile("(\\$?[A-Z]+)?" + "(\\$?[0-9]+)?", |
|
Pattern.CASE_INSENSITIVE); |
|
private static final char SHEET_NAME_DELIMITER = '!'; |
|
private static final char REDUNDANT_CHARACTERS = '$'; |
|
|
|
private PositionUtils() {} |
|
|
|
public static int getRowByRowTagt(String rowTagt, Integer before) { |
|
int row; |
|
if (rowTagt != null) { |
|
row = Integer.parseInt(rowTagt) - 1; |
|
return row; |
|
} else { |
|
if (before == null) { |
|
before = -1; |
|
} |
|
return before + 1; |
|
} |
|
} |
|
|
|
public static int getRow(String currentCellIndex) { |
|
if (currentCellIndex == null) { |
|
return -1; |
|
} |
|
int firstNumber = currentCellIndex.length() - 1; |
|
for (; firstNumber >= 0; firstNumber--) { |
|
char c = currentCellIndex.charAt(firstNumber); |
|
if (c < '0' || c > '9') { |
|
break; |
|
} |
|
} |
|
return Integer.parseUnsignedInt(currentCellIndex.substring(firstNumber + 1)) - 1; |
|
} |
|
|
|
public static int getCol(String currentCellIndex, Integer before) { |
|
if (currentCellIndex == null) { |
|
if (before == null) { |
|
before = -1; |
|
} |
|
return before + 1; |
|
} |
|
int firstNumber = currentCellIndex.charAt(0) == REDUNDANT_CHARACTERS ? 1 : 0; |
|
int col = 0; |
|
for (; firstNumber < currentCellIndex.length(); firstNumber++) { |
|
char c = currentCellIndex.charAt(firstNumber); |
|
boolean isNotLetter = c == REDUNDANT_CHARACTERS || (c >= '0' && c <= '9'); |
|
if (isNotLetter) { |
|
break; |
|
} |
|
col = col * 26 + Character.toUpperCase(c) - 'A' + 1; |
|
} |
|
return col - 1; |
|
} |
|
|
|
}
|
|
|