Bladeren bron

模板导出-迭代合并单元格

4.1.3.A
jueyue 5 jaren geleden
bovenliggende
commit
e15c4f106d
2 gewijzigde bestanden met toevoegingen van 51 en 9 verwijderingen
  1. +21
    -8
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelForEachParams.java
  2. +30
    -1
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java

+ 21
- 8
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelForEachParams.java Bestand weergeven

@@ -1,19 +1,20 @@
package cn.afterturn.easypoi.excel.entity.params;
import org.apache.poi.ss.usermodel.CellStyle;
import java.io.Serializable;
import java.util.Stack;
import org.apache.poi.ss.usermodel.CellStyle;
/**
* 模板for each是的参数
*
* @author JueYue
* 2015年4月29日 下午9:22:48
* 2015年4月29日 下午9:22:48
*/
public class ExcelForEachParams implements Serializable {
/**
*
*
*/
private static final long serialVersionUID = 1L;
/**
@@ -44,8 +45,12 @@ public class ExcelForEachParams implements Serializable {
* 行合并
*/
private int rowspan = 1;
private boolean needSum;
/**
* 行合并
*/
private boolean collectCell;
private boolean needSum;
public ExcelForEachParams() {
@@ -56,8 +61,8 @@ public class ExcelForEachParams implements Serializable {
this.cellStyle = cellStyle;
this.height = height;
}
public ExcelForEachParams(String name, CellStyle cellStyle, short height,boolean needSum) {
public ExcelForEachParams(String name, CellStyle cellStyle, short height, boolean needSum) {
this.name = name;
this.cellStyle = cellStyle;
this.height = height;
@@ -128,4 +133,12 @@ public class ExcelForEachParams implements Serializable {
public void setTempName(Stack<String> tempName) {
this.tempName = tempName;
}
public boolean isCollectCell() {
return collectCell;
}
public void setCollectCell(boolean collectCell) {
this.collectCell = collectCell;
}
}

+ 30
- 1
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java Bestand weergeven

@@ -736,11 +736,34 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
ci = ci + params.getColspan();
}
loopCi = Math.max(loopCi, ci);
// 需要把需要合并的单元格合并了 --- 不是集合的栏位合并了
if (loopSize > 1) {
handlerLoopMergedRegion(row, columnIndex, columns, loopSize);
}
row = row.getSheet().getRow(row.getRowNum() + 1);
}
return new int[]{loopSize, loopCi};
}
/**
* 迭代把不是集合的数据都合并了
*
* @param row
* @param columnIndex
* @param columns
* @param loopSize
*/
private void handlerLoopMergedRegion(Row row, int columnIndex, List<ExcelForEachParams> columns, int loopSize) {
for (int i = 0; i < columns.size(); i++) {
if (!columns.get(i).isCollectCell()) {
PoiMergeCellUtil.addMergedRegion(row.getSheet(), row.getRowNum(),
row.getRowNum() + loopSize - 1, columnIndex,
columnIndex + columns.get(i).getColspan() - 1);
}
columnIndex = columnIndex + columns.get(i).getColspan();
}
}
private short getMaxHeight(int k, int colspan, List<ExcelForEachParams> columns) {
short high = columns.get(0).getHeight();
int n = k;
@@ -789,12 +812,15 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
int[] loopArr = setForeachRowCellValue(false, tempRow, columnIndex, data, temp, map, rowspan,
colspan, mergedRegionHelper);
nums += loopArr[0];
ci = Math.max(ci,loopArr[1]);
ci = Math.max(ci, loopArr[1]);
map.remove("loop_" + columnIndex);
tempRow = createRow(tempRow.getRowNum() + loopArr[0], row.getSheet(), false, rowspan);
}
for (int i = 0; i < temp.size(); i++) {
temp.get(i).setName(temp.get(i).getTempName().pop());
//都是集合
temp.get(i).setCollectCell(true);
}
return new int[]{nums, temp.size(), ci};
}
@@ -810,11 +836,14 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
private List<ExcelForEachParams> getLoopEachParams(List<ExcelForEachParams> columns, int columnIndex, String collectName) {
List<ExcelForEachParams> temp = new ArrayList<>();
for (int i = 0; i < columns.size(); i++) {
//先置为不是集合
columns.get(i).setCollectCell(false);
if (columns.get(i) == null || columns.get(i).getName().contains(collectName)) {
temp.add(columns.get(i));
if (columns.get(i).getTempName() == null) {
columns.get(i).setTempName(new Stack<>());
}
columns.get(i).setCollectCell(true);
columns.get(i).getTempName().push(columns.get(i).getName());
columns.get(i).setName(columns.get(i).getName().replace(collectName, "loop_" + columnIndex));
}


Laden…
Annuleren
Opslaan