package com.zjpii.rtbts.commons;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFSheet;
public class MergeUtil {
/*
* comlumnData 纵列值
* attachRows 表头的附加行
*/
public void getColumn(String[] comlumnData,XSSFSheet sheet,int column,int attachRows) {
int start = 0;
for (int i = 0; i < comlumnData.length; i++) {
if (i>0 && !comlumnData[i-1].equals(comlumnData[i])) // 当前值与上一个值不同
start = i;
if(start!=i && !(i<(comlumnData.length-1) && comlumnData[i].equals(comlumnData[i+1])))
sheet.addMergedRegion(new CellRangeAddress((start+attachRows),(i+attachRows),column, column));// 数量
}
}
/*
* reference 做参考的列
* to 要进行合并的列
*/
public void referenceToColumn(String[] reference, String[] to,XSSFSheet sheet,int column,int attachRows) {
String[] comlumnData = new String[to.length];
for(int i=0;i<comlumnData.length;i++)
comlumnData[i] = reference[i]+to[i];
getColumn(comlumnData,sheet,column,attachRows);
}
}
改成单例的
package com.zjpii.rtbts.commons;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFSheet;
public class MergeUtil {
// 单例
static class MergeUtilHolder {
static MergeUtil instance = new MergeUtil();
}
public static MergeUtil getInstance() {
return MergeUtilHolder.instance;
}
/*
* comlumnData 纵列值
* attachRows 表头的附加行
*/
public void getColumn(String[] comlumnData,XSSFSheet sheet,int column,int attachRows) {
int start = 0;
for (int i = 0; i < comlumnData.length; i++) {
if (i>0 && !comlumnData[i-1].equals(comlumnData[i])) // 当前值与上一个值不同
start = i;
if(start!=i && !(i<(comlumnData.length-1) && comlumnData[i].equals(comlumnData[i+1])))
sheet.addMergedRegion(new CellRangeAddress((start+attachRows),(i+attachRows),column, column));// 数量
}
}
/*
* reference 做参考的列
* to 要进行合并的列
*/
public void referenceToColumn(String[] reference, String[] to,XSSFSheet sheet,int column,int attachRows) {
String[] comlumnData = new String[to.length];
for(int i=0;i<comlumnData.length;i++)
comlumnData[i] = reference[i]+to[i];
getColumn(comlumnData,sheet,column,attachRows);
}
}