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); } }