Commit cfd43d84 authored by yanzg's avatar yanzg

EXCEL自定义列处理

parent 6c1f982f
......@@ -187,6 +187,7 @@ public class ExcelConsole<T extends Object> implements DbRow<T> {
String[] columns = new String[this.config.getColumns().size()];
int pos = 0;
for (ExportColumn column : this.config.getColumns()) {
column.column = pos;
columns[pos++] = column.getTitle();
}
return TableHeadHelper.getTableHead(columns);
......@@ -278,13 +279,10 @@ public class ExcelConsole<T extends Object> implements DbRow<T> {
}
}
// 设置列宽度
int columnPos = 0;
// 合并数据配置
for (ExportColumn column : this.config.getColumns()) {
sheet.setColumnWidth(columnPos, getUnit(column.getWidth()));
columnPos++;
sheet.setColumnWidth(column.column, getUnit(column.getWidth()));
// 列样式
column.cellStyle = createColumnStyle(this.workbook, column);
}
......@@ -318,13 +316,12 @@ public class ExcelConsole<T extends Object> implements DbRow<T> {
private void writeDefineFormula(List<ExcelDefineRow> rows) {
Map<String, Object> map = new HashMap<>(this.config.getColumns().size() * 2 + 3);
// 设置列别名
int columnPos = 0;
for (ExportColumn column : this.config.getColumns()) {
map.put(column.getName(), String.format("%s:%s",
CellReferenceUtil.getCoordName(columnPos, this.startDataRowIndex),
CellReferenceUtil.getCoordName(columnPos, this.endDataRowIndex)
CellReferenceUtil.getCoordName(column.column, this.startDataRowIndex),
CellReferenceUtil.getCoordName(column.column, this.endDataRowIndex)
));
map.put(column.getName() + "_COL", CellReferenceUtil.getColName(columnPos));
map.put(column.getName() + "_COL", CellReferenceUtil.getColName(column.column));
}
// 数据行开始行号
map.put("startDataRowIndex", CellReferenceUtil.getRowName(this.startDataRowIndex));
......@@ -383,7 +380,6 @@ public class ExcelConsole<T extends Object> implements DbRow<T> {
// 将当前組生成值密钥
StringBuilder sb = new StringBuilder();
// 写入本行内容
int columnPos = 0;
for (ExportColumn column : this.config.getColumns()) {
String columnName = column.getName();
String value = StringHelper.getFirst(rowHandle.get(t, columnName));
......@@ -404,10 +400,9 @@ public class ExcelConsole<T extends Object> implements DbRow<T> {
// 当前行行高
height = Math.max(nowCellHeight, height);
// 当不需要合并历史记录时,则创建新的内容
createCell(row, columnPos, value, column.cellStyle);
createCell(row, column.column, value, column.cellStyle);
// 合并列
mergerColumn(column, columnPos, false);
columnPos++;
mergerColumn(column, column.column, false);
}
row.setHeight((short) Math.min(height, Short.MAX_VALUE));
......@@ -488,10 +483,8 @@ public class ExcelConsole<T extends Object> implements DbRow<T> {
// 合并数据配置
if (this.rowData > 0) {
int columnPos = 0;
for (ExportColumn column : this.config.getColumns()) {
mergerColumn(column, columnPos, true);
columnPos++;
mergerColumn(column, column.column, true);
}
}
......
......@@ -44,9 +44,17 @@ public class ExportColumn {
*/
@ApiModelProperty(notes = "上下对其:0-居中,1-上对其,2-下对齐")
private int verticalAlignment;
/**
* 列序号
*/
int column;
/**
* 合计列数据
*/
ExcelMergerData groupData = new ExcelMergerData();
/**
* 列样式
*/
CellStyle cellStyle;
public ExportColumn() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment