|
|
@@ -6,17 +6,19 @@ import java.util.Map; |
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 合并单元格帮助类
|
|
|
|
*
|
|
|
|
* @author JueYue
|
|
|
|
* 2015年5月9日 下午2:13:35
|
|
|
|
* 2015年5月9日 下午2:13:35
|
|
|
|
*/
|
|
|
|
public class MergedRegionHelper {
|
|
|
|
|
|
|
|
private Map<String, Integer[]> mergedCache = new HashMap<String, Integer[]>();
|
|
|
|
private Map<String, Integer[]> mergedCache = new HashMap<String, Integer[]>();
|
|
|
|
|
|
|
|
private Set<String> notNeedCread = new HashSet<String>();
|
|
|
|
private Set<String> notNeedCread = new HashSet<String>();
|
|
|
|
|
|
|
|
public MergedRegionHelper(Sheet sheet) {
|
|
|
|
getAllMergedRegion(sheet);
|
|
|
@@ -31,6 +33,7 @@ public class MergedRegionHelper { |
|
|
|
|
|
|
|
/**
|
|
|
|
* 根据合并输出内容,处理合并单元格事情
|
|
|
|
*
|
|
|
|
* @param formatAsString
|
|
|
|
*/
|
|
|
|
private void handerMergedString(String formatAsString) {
|
|
|
@@ -47,7 +50,7 @@ public class MergedRegionHelper { |
|
|
|
}
|
|
|
|
int endRol = Integer.valueOf(strArr[1].substring(strArr[1].charAt(1) >= 65 ? 2 : 1));
|
|
|
|
mergedCache.put(startRol + "_" + startCol,
|
|
|
|
new Integer[] { endRol - startRol + 1, endCol - startCol + 1 });
|
|
|
|
new Integer[]{endRol - startRol + 1, endCol - startCol + 1});
|
|
|
|
for (int i = startRol; i <= endRol; i++) {
|
|
|
|
for (int j = startCol; j <= endCol; j++) {
|
|
|
|
notNeedCread.add(i + "_" + j);
|
|
|
@@ -60,6 +63,7 @@ public class MergedRegionHelper { |
|
|
|
|
|
|
|
/**
|
|
|
|
* 是不是需要创建这个TD
|
|
|
|
*
|
|
|
|
* @param row
|
|
|
|
* @param col
|
|
|
|
* @return
|
|
|
@@ -70,6 +74,7 @@ public class MergedRegionHelper { |
|
|
|
|
|
|
|
/**
|
|
|
|
* 是不是合并区域
|
|
|
|
*
|
|
|
|
* @param row
|
|
|
|
* @param col
|
|
|
|
* @return
|
|
|
@@ -80,6 +85,7 @@ public class MergedRegionHelper { |
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取合并区域
|
|
|
|
*
|
|
|
|
* @param row
|
|
|
|
* @param col
|
|
|
|
* @return
|
|
|
@@ -88,4 +94,26 @@ public class MergedRegionHelper { |
|
|
|
return mergedCache.get(row + "_" + col);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 插入之后还原之前的合并单元格
|
|
|
|
*
|
|
|
|
* @param rowIndex
|
|
|
|
* @param size
|
|
|
|
*/
|
|
|
|
public void shiftRows(Sheet sheet, int rowIndex, int size) {
|
|
|
|
Set<String> keys = new HashSet<String>();
|
|
|
|
keys.addAll(mergedCache.keySet());
|
|
|
|
for (String key : keys) {
|
|
|
|
String[] temp = key.split("_");
|
|
|
|
if (Integer.parseInt(temp[0]) >= rowIndex) {
|
|
|
|
Integer[] data = mergedCache.get(key);
|
|
|
|
mergedCache.put((Integer.parseInt(temp[0]) + size) + "_" + temp[1], mergedCache.get(key));
|
|
|
|
// 还原合并单元格
|
|
|
|
sheet.addMergedRegion(new CellRangeAddress(
|
|
|
|
Integer.parseInt(temp[0]) + size - 1, Integer.parseInt(temp[0]) + data[0] + size - 2,
|
|
|
|
Integer.parseInt(temp[1]), Integer.parseInt(temp[1]) + data[1] - 1
|
|
|
|
));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|