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);
}
}
本文介绍了一个用于Excel表格(XLSX格式)的Java工具类,该工具能够根据指定的列值进行单元格合并,支持单列合并及参照另一列进行合并的功能。此工具适用于批量处理Excel文件,提高数据展示的清晰度。
169万+

被折叠的 条评论
为什么被折叠?



