forked from fanruan/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.5 KiB
82 lines
2.5 KiB
package com.alibaba.excel.util; |
|
|
|
import java.util.Locale; |
|
import java.util.regex.Matcher; |
|
import java.util.regex.Pattern; |
|
|
|
import org.apache.poi.ss.util.CellReference; |
|
|
|
/** |
|
* @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 PositionUtils() {} |
|
|
|
public static int getRowByRowTagt(String rowTagt) { |
|
int row = 0; |
|
if (rowTagt != null) { |
|
row = Integer.parseInt(rowTagt) - 1; |
|
} |
|
return row; |
|
} |
|
|
|
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) { |
|
int plingPos = currentCellIndex.lastIndexOf(SHEET_NAME_DELIMITER); |
|
String cell = currentCellIndex.substring(plingPos + 1).toUpperCase(Locale.ROOT); |
|
Matcher matcher = CELL_REF_PATTERN.matcher(cell); |
|
if (!matcher.matches()) { |
|
throw new IllegalArgumentException("Invalid CellReference: " + currentCellIndex); |
|
} |
|
String row = matcher.group(2); |
|
return Integer.parseInt(row) - 1; |
|
} |
|
return -1; |
|
} |
|
|
|
public static int getCol(String currentCellIndex, Integer before) { |
|
if (currentCellIndex != null) { |
|
int plingPos = currentCellIndex.lastIndexOf(SHEET_NAME_DELIMITER); |
|
String cell = currentCellIndex.substring(plingPos + 1).toUpperCase(Locale.ROOT); |
|
Matcher matcher = CELL_REF_PATTERN.matcher(cell); |
|
if (!matcher.matches()) { |
|
throw new IllegalArgumentException("Invalid CellReference: " + currentCellIndex); |
|
} |
|
String col = matcher.group(1); |
|
|
|
if (col.length() > 0 && col.charAt(0) == '$') { |
|
col = col.substring(1); |
|
} |
|
if (col.length() == 0) { |
|
return -1; |
|
} else { |
|
return CellReference.convertColStringToIndex(col); |
|
} |
|
} else { |
|
if (before == null) { |
|
before = -1; |
|
} |
|
return before + 1; |
|
} |
|
} |
|
|
|
}
|
|
|