@@ -105,7 +105,7 @@ public class ExcelBatchExportService extends ExcelExportService { | |||||
while (its.hasNext()) { | while (its.hasNext()) { | ||||
Object t = its.next(); | Object t = its.next(); | ||||
try { | try { | ||||
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight); | |||||
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight, 0)[0]; | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
LOGGER.error(e.getMessage(), e); | LOGGER.error(e.getMessage(), e); | ||||
throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e); | throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e); | ||||
@@ -22,6 +22,7 @@ import java.util.Collection; | |||||
import java.util.Iterator; | import java.util.Iterator; | ||||
import java.util.List; | import java.util.List; | ||||
import cn.afterturn.easypoi.util.PoiMergeCellUtil; | |||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.apache.poi.ss.usermodel.CellStyle; | import org.apache.poi.ss.usermodel.CellStyle; | ||||
import org.apache.poi.ss.usermodel.Drawing; | import org.apache.poi.ss.usermodel.Drawing; | ||||
@@ -48,7 +49,9 @@ import cn.afterturn.easypoi.util.PoiPublicUtil; | |||||
*/ | */ | ||||
public class ExcelExportService extends BaseExportService { | public class ExcelExportService extends BaseExportService { | ||||
// 最大行数,超过自动多Sheet | |||||
/** | |||||
* 最大行数,超过自动多Sheet | |||||
*/ | |||||
private static int MAX_NUM = 60000; | private static int MAX_NUM = 60000; | ||||
protected int createHeaderAndTitle(ExportParams entity, Sheet sheet, Workbook workbook, | protected int createHeaderAndTitle(ExportParams entity, Sheet sheet, Workbook workbook, | ||||
@@ -57,11 +60,71 @@ public class ExcelExportService extends BaseExportService { | |||||
if (entity.getTitle() != null) { | if (entity.getTitle() != null) { | ||||
rows += createTitle2Row(entity, sheet, workbook, fieldLength); | rows += createTitle2Row(entity, sheet, workbook, fieldLength); | ||||
} | } | ||||
rows += createHeaderRow(entity, sheet, workbook, rows, excelParams); | |||||
createHeaderRow(entity, sheet, workbook, rows, excelParams, 0); | |||||
rows += getRowNums(excelParams, true); | |||||
sheet.createFreezePane(0, rows, 0, rows); | sheet.createFreezePane(0, rows, 0, rows); | ||||
return rows; | return rows; | ||||
} | } | ||||
/** | |||||
* 创建表头 | |||||
*/ | |||||
private int createHeaderRow(ExportParams title, Sheet sheet, Workbook workbook, int index, | |||||
List<ExcelExportEntity> excelParams, int cellIndex) { | |||||
Row row = sheet.getRow(index) == null ? sheet.createRow(index) : sheet.getRow(index); | |||||
int rows = getRowNums(excelParams, true); | |||||
row.setHeight(title.getHeaderHeight()); | |||||
Row listRow = null; | |||||
if (rows >= 2) { | |||||
listRow = sheet.createRow(index + 1); | |||||
listRow.setHeight(title.getHeaderHeight()); | |||||
} | |||||
int groupCellLength = 0; | |||||
CellStyle titleStyle = getExcelExportStyler().getTitleStyle(title.getColor()); | |||||
for (int i = 0, exportFieldTitleSize = excelParams.size(); i < exportFieldTitleSize; i++) { | |||||
ExcelExportEntity entity = excelParams.get(i); | |||||
// 加入换了groupName或者结束就,就把之前的那个换行 | |||||
if (StringUtils.isBlank(entity.getGroupName()) || !entity.getGroupName().equals(excelParams.get(i - 1).getGroupName())) { | |||||
if (groupCellLength > 1) { | |||||
sheet.addMergedRegion(new CellRangeAddress(index, index, cellIndex - groupCellLength, cellIndex - 1)); | |||||
} | |||||
groupCellLength = 0; | |||||
} | |||||
if (StringUtils.isNotBlank(entity.getGroupName())) { | |||||
createStringCell(row, cellIndex, entity.getGroupName(), titleStyle, entity); | |||||
createStringCell(listRow, cellIndex, entity.getName(), titleStyle, entity); | |||||
groupCellLength++; | |||||
} else if (StringUtils.isNotBlank(entity.getName())) { | |||||
createStringCell(row, cellIndex, entity.getName(), titleStyle, entity); | |||||
} | |||||
if (entity.getList() != null) { | |||||
// 保持原来的 | |||||
int tempCellIndex = cellIndex; | |||||
cellIndex = createHeaderRow(title, sheet, workbook, rows == 1 ? index : index + 1, entity.getList(), cellIndex); | |||||
List<ExcelExportEntity> sTitel = entity.getList(); | |||||
if (StringUtils.isNotBlank(entity.getName()) && sTitel.size() > 1) { | |||||
PoiMergeCellUtil.addMergedRegion(sheet, index, index, tempCellIndex, tempCellIndex + sTitel.size() - 1); | |||||
} | |||||
/*for (int j = 0, size = sTitel.size(); j < size; j++) { | |||||
createStringCell(rows == 2 ? listRow : row, cellIndex, sTitel.get(j).getName(), | |||||
titleStyle, entity); | |||||
cellIndex++; | |||||
}*/ | |||||
cellIndex--; | |||||
} else if (rows > 1 && StringUtils.isBlank(entity.getGroupName())) { | |||||
createStringCell(listRow, cellIndex, "", titleStyle, entity); | |||||
PoiMergeCellUtil.addMergedRegion(sheet, index, index + rows - 1, cellIndex, cellIndex); | |||||
} | |||||
cellIndex++; | |||||
} | |||||
if (groupCellLength > 1) { | |||||
PoiMergeCellUtil.addMergedRegion(sheet, index, index, cellIndex - groupCellLength, cellIndex - 1); | |||||
} | |||||
return cellIndex; | |||||
} | |||||
/** | /** | ||||
* 创建 表头改变 | * 创建 表头改变 | ||||
*/ | */ | ||||
@@ -76,7 +139,7 @@ public class ExcelExportService extends BaseExportService { | |||||
createStringCell(row, i, "", | createStringCell(row, i, "", | ||||
getExcelExportStyler().getHeaderStyle(entity.getHeaderColor()), null); | getExcelExportStyler().getHeaderStyle(entity.getHeaderColor()), null); | ||||
} | } | ||||
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, fieldWidth)); | |||||
PoiMergeCellUtil.addMergedRegion(sheet, 0, 0, 0, fieldWidth); | |||||
if (entity.getSecondTitle() != null) { | if (entity.getSecondTitle() != null) { | ||||
row = sheet.createRow(1); | row = sheet.createRow(1); | ||||
row.setHeight(entity.getSecondTitleHeight()); | row.setHeight(entity.getSecondTitleHeight()); | ||||
@@ -87,7 +150,7 @@ public class ExcelExportService extends BaseExportService { | |||||
createStringCell(row, i, "", | createStringCell(row, i, "", | ||||
getExcelExportStyler().getHeaderStyle(entity.getHeaderColor()), null); | getExcelExportStyler().getHeaderStyle(entity.getHeaderColor()), null); | ||||
} | } | ||||
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, fieldWidth)); | |||||
PoiMergeCellUtil.addMergedRegion(sheet, 1, 1, 0, fieldWidth); | |||||
return 2; | return 2; | ||||
} | } | ||||
return 1; | return 1; | ||||
@@ -176,7 +239,7 @@ public class ExcelExportService extends BaseExportService { | |||||
List<Object> tempList = new ArrayList<Object>(); | List<Object> tempList = new ArrayList<Object>(); | ||||
while (its.hasNext()) { | while (its.hasNext()) { | ||||
Object t = its.next(); | Object t = its.next(); | ||||
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight); | |||||
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight, 0)[0]; | |||||
tempList.add(t); | tempList.add(t); | ||||
if (index >= MAX_NUM) { | if (index >= MAX_NUM) { | ||||
break; | break; | ||||
@@ -211,60 +274,5 @@ public class ExcelExportService extends BaseExportService { | |||||
} | } | ||||
} | } | ||||
/** | |||||
* 创建表头 | |||||
*/ | |||||
private int createHeaderRow(ExportParams title, Sheet sheet, Workbook workbook, int index, | |||||
List<ExcelExportEntity> excelParams) { | |||||
Row row = sheet.createRow(index); | |||||
int rows = getRowNums(excelParams); | |||||
row.setHeight(title.getHeaderHeight()); | |||||
Row listRow = null; | |||||
if (rows == 2) { | |||||
listRow = sheet.createRow(index + 1); | |||||
listRow.setHeight(title.getHeaderHeight()); | |||||
} | |||||
int cellIndex = 0; | |||||
int groupCellLength = 0; | |||||
CellStyle titleStyle = getExcelExportStyler().getTitleStyle(title.getColor()); | |||||
for (int i = 0, exportFieldTitleSize = excelParams.size(); i < exportFieldTitleSize; i++) { | |||||
ExcelExportEntity entity = excelParams.get(i); | |||||
// 加入换了groupName或者结束就,就把之前的那个换行 | |||||
if (StringUtils.isBlank(entity.getGroupName()) || !entity.getGroupName().equals(excelParams.get(i - 1).getGroupName())) { | |||||
if (groupCellLength > 1) { | |||||
sheet.addMergedRegion(new CellRangeAddress(index, index, cellIndex - groupCellLength, cellIndex - 1)); | |||||
} | |||||
groupCellLength = 0; | |||||
} | |||||
if (StringUtils.isNotBlank(entity.getGroupName())) { | |||||
createStringCell(row, cellIndex, entity.getGroupName(), titleStyle, entity); | |||||
createStringCell(listRow, cellIndex, entity.getName(), titleStyle, entity); | |||||
groupCellLength++; | |||||
} else if (StringUtils.isNotBlank(entity.getName())) { | |||||
createStringCell(row, cellIndex, entity.getName(), titleStyle, entity); | |||||
} | |||||
if (entity.getList() != null) { | |||||
List<ExcelExportEntity> sTitel = entity.getList(); | |||||
if (StringUtils.isNotBlank(entity.getName()) && sTitel.size() > 1) { | |||||
sheet.addMergedRegion(new CellRangeAddress(index, index, cellIndex, cellIndex + sTitel.size() - 1)); | |||||
} | |||||
for (int j = 0, size = sTitel.size(); j < size; j++) { | |||||
createStringCell(rows == 2 ? listRow : row, cellIndex, sTitel.get(j).getName(), | |||||
titleStyle, entity); | |||||
cellIndex++; | |||||
} | |||||
cellIndex--; | |||||
} else if (rows == 2 && StringUtils.isBlank(entity.getGroupName())) { | |||||
createStringCell(listRow, cellIndex, "", titleStyle, entity); | |||||
sheet.addMergedRegion(new CellRangeAddress(index, index + 1, cellIndex, cellIndex)); | |||||
} | |||||
cellIndex++; | |||||
} | |||||
if (groupCellLength > 1) { | |||||
sheet.addMergedRegion(new CellRangeAddress(index, index, cellIndex - groupCellLength, cellIndex - 1)); | |||||
} | |||||
return rows; | |||||
} | |||||
} | } |
@@ -1,11 +1,11 @@ | |||||
/** | /** | ||||
* Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) | * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) | ||||
* | |||||
* <p> | |||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except | ||||
* in compliance with the License. You may obtain a copy of the License at | * in compliance with the License. You may obtain a copy of the License at | ||||
* | |||||
* <p> | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* <p> | |||||
* Unless required by applicable law or agreed to in writing, software distributed under the License | * Unless required by applicable law or agreed to in writing, software distributed under the License | ||||
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express | * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express | ||||
* or implied. See the License for the specific language governing permissions and limitations under | * or implied. See the License for the specific language governing permissions and limitations under | ||||
@@ -69,16 +69,18 @@ public abstract class BaseExportService extends ExportCommonService { | |||||
/** | /** | ||||
* 创建 最主要的 Cells | * 创建 最主要的 Cells | ||||
*/ | */ | ||||
public int createCells(Drawing patriarch, int index, Object t, | |||||
List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook, | |||||
short rowHeight) { | |||||
public int[] createCells(Drawing patriarch, int index, Object t, | |||||
List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook, | |||||
short rowHeight, int cellNum) { | |||||
try { | try { | ||||
ExcelExportEntity entity; | ExcelExportEntity entity; | ||||
Row row = sheet.createRow(index); | |||||
Row row = sheet.getRow(index) == null ? sheet.createRow(index) : sheet.getRow(index); | |||||
if (rowHeight != -1) { | if (rowHeight != -1) { | ||||
row.setHeight(rowHeight); | row.setHeight(rowHeight); | ||||
} | } | ||||
int maxHeight = 1, cellNum = 0; | |||||
int maxHeight = 1; | |||||
// 合并需要合并的单元格 | |||||
int margeCellNum = cellNum; | |||||
int indexKey = createIndexCell(row, index, excelParams.get(0)); | int indexKey = createIndexCell(row, index, excelParams.get(0)); | ||||
cellNum += indexKey; | cellNum += indexKey; | ||||
for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) { | for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) { | ||||
@@ -87,16 +89,22 @@ public abstract class BaseExportService extends ExportCommonService { | |||||
Collection<?> list = getListCellValue(entity, t); | Collection<?> list = getListCellValue(entity, t); | ||||
int listC = 0; | int listC = 0; | ||||
if (list != null && list.size() > 0) { | if (list != null && list.size() > 0) { | ||||
int tempCellNum = 0; | |||||
for (Object obj : list) { | for (Object obj : list) { | ||||
createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), | |||||
int[] temp = createCells(patriarch, index + maxHeight - 1, obj, entity.getList(), sheet, workbook, rowHeight, cellNum); | |||||
tempCellNum = temp[1]; | |||||
maxHeight += temp[0]; | |||||
/*createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), | |||||
sheet, workbook, rowHeight); | sheet, workbook, rowHeight); | ||||
listC++; | |||||
listC++;*/ | |||||
} | } | ||||
cellNum = tempCellNum; | |||||
maxHeight--; | |||||
} | } | ||||
cellNum += entity.getList().size(); | |||||
/* cellNum += entity.getList().size(); | |||||
if (list != null && list.size() > maxHeight) { | if (list != null && list.size() > maxHeight) { | ||||
maxHeight = list.size(); | maxHeight = list.size(); | ||||
} | |||||
}*/ | |||||
} else { | } else { | ||||
Object value = getCellValue(entity, t); | Object value = getCellValue(entity, t); | ||||
@@ -125,24 +133,23 @@ public abstract class BaseExportService extends ExportCommonService { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
// 合并需要合并的单元格 | |||||
cellNum = 0; | |||||
for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) { | for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) { | ||||
entity = excelParams.get(k); | entity = excelParams.get(k); | ||||
if (entity.getList() != null) { | if (entity.getList() != null) { | ||||
cellNum += entity.getList().size(); | |||||
margeCellNum += entity.getList().size(); | |||||
} else if (entity.isNeedMerge() && maxHeight > 1) { | } else if (entity.isNeedMerge() && maxHeight > 1) { | ||||
for (int i = index + 1; i < index + maxHeight; i++) { | for (int i = index + 1; i < index + maxHeight; i++) { | ||||
sheet.getRow(i).createCell(cellNum); | |||||
sheet.getRow(i).getCell(cellNum).setCellStyle(getStyles(false, entity)); | |||||
sheet.getRow(i).createCell(margeCellNum); | |||||
sheet.getRow(i).getCell(margeCellNum).setCellStyle(getStyles(false, entity)); | |||||
} | } | ||||
PoiMergeCellUtil.addMergedRegion(sheet,index, index + maxHeight - 1, cellNum, cellNum); | |||||
cellNum++; | |||||
PoiMergeCellUtil.addMergedRegion(sheet, index, index + maxHeight - 1, margeCellNum, margeCellNum); | |||||
margeCellNum++; | |||||
} | } | ||||
} | } | ||||
return maxHeight; | |||||
return new int[]{maxHeight, cellNum}; | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
LOGGER.error("excel cell export error ,data is :{}", ReflectionToStringBuilder.toString(t)); | LOGGER.error("excel cell export error ,data is :{}", ReflectionToStringBuilder.toString(t)); | ||||
LOGGER.error(e.getMessage(), e); | |||||
throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e); | throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e); | ||||
} | } | ||||
@@ -396,17 +403,17 @@ public abstract class BaseExportService extends ExportCommonService { | |||||
} | } | ||||
public void setColumnHidden(List<ExcelExportEntity> excelParams, Sheet sheet){ | |||||
public void setColumnHidden(List<ExcelExportEntity> excelParams, Sheet sheet) { | |||||
int index = 0; | int index = 0; | ||||
for (int i = 0; i < excelParams.size(); i++) { | for (int i = 0; i < excelParams.size(); i++) { | ||||
if (excelParams.get(i).getList() != null) { | if (excelParams.get(i).getList() != null) { | ||||
List<ExcelExportEntity> list = excelParams.get(i).getList(); | List<ExcelExportEntity> list = excelParams.get(i).getList(); | ||||
for (int j = 0; j < list.size(); j++) { | for (int j = 0; j < list.size(); j++) { | ||||
sheet.setColumnHidden(index,list.get(j).isColumnHidden()); | |||||
sheet.setColumnHidden(index, list.get(j).isColumnHidden()); | |||||
index++; | index++; | ||||
} | } | ||||
} else { | } else { | ||||
sheet.setColumnHidden(index,excelParams.get(i).isColumnHidden());; | |||||
sheet.setColumnHidden(index, excelParams.get(i).isColumnHidden()); | |||||
index++; | index++; | ||||
} | } | ||||
} | } | ||||
@@ -154,7 +154,7 @@ public class ExportCommonService { | |||||
PoiPublicUtil.getClassFields(clz), list, clz, null, null); | PoiPublicUtil.getClassFields(clz), list, clz, null, null); | ||||
excelEntity = new ExcelExportEntity(); | excelEntity = new ExcelExportEntity(); | ||||
excelEntity.setName(PoiPublicUtil.getValueByTargetId(excel.name(), targetId, null)); | excelEntity.setName(PoiPublicUtil.getValueByTargetId(excel.name(), targetId, null)); | ||||
if (i18nHandler == null) { | |||||
if (i18nHandler != null) { | |||||
excelEntity.setName(i18nHandler.getLocaleName(excelEntity.getName())); | excelEntity.setName(i18nHandler.getLocaleName(excelEntity.getName())); | ||||
} | } | ||||
excelEntity.setOrderNum(Integer | excelEntity.setOrderNum(Integer | ||||
@@ -211,8 +211,8 @@ public class ExportCommonService { | |||||
if (StringUtils.isNotEmpty(entity.getSuffix()) && value != null) { | if (StringUtils.isNotEmpty(entity.getSuffix()) && value != null) { | ||||
value = value + entity.getSuffix(); | value = value + entity.getSuffix(); | ||||
} | } | ||||
if (value != null && StringUtils.isNotEmpty(entity.getEnumExportField())){ | |||||
value = PoiReflectorUtil.fromCache(value.getClass()).getValue(value,entity.getEnumExportField()); | |||||
if (value != null && StringUtils.isNotEmpty(entity.getEnumExportField())) { | |||||
value = PoiReflectorUtil.fromCache(value.getClass()).getValue(value, entity.getEnumExportField()); | |||||
} | } | ||||
return value == null ? "" : value.toString(); | return value == null ? "" : value.toString(); | ||||
} | } | ||||
@@ -263,7 +263,7 @@ public class ExportCommonService { | |||||
} else { | } else { | ||||
excelEntity.setGroupName(excel.groupName()); | excelEntity.setGroupName(excel.groupName()); | ||||
} | } | ||||
if (i18nHandler == null) { | |||||
if (i18nHandler != null) { | |||||
excelEntity.setName(i18nHandler.getLocaleName(excelEntity.getName())); | excelEntity.setName(i18nHandler.getLocaleName(excelEntity.getName())); | ||||
excelEntity.setGroupName(i18nHandler.getLocaleName(excelEntity.getGroupName())); | excelEntity.setGroupName(i18nHandler.getLocaleName(excelEntity.getGroupName())); | ||||
} | } | ||||
@@ -383,21 +383,25 @@ public class ExportCommonService { | |||||
public int getFieldLength(List<ExcelExportEntity> excelParams) { | public int getFieldLength(List<ExcelExportEntity> excelParams) { | ||||
int length = -1;// 从0开始计算单元格的 | int length = -1;// 从0开始计算单元格的 | ||||
for (ExcelExportEntity entity : excelParams) { | for (ExcelExportEntity entity : excelParams) { | ||||
length += entity.getList() != null ? entity.getList().size() : 1; | |||||
if (entity.getList() != null) { | |||||
length += getFieldLength(entity.getList()) + 1; | |||||
} else { | |||||
length++; | |||||
} | |||||
} | } | ||||
return length; | return length; | ||||
} | } | ||||
/** | /** | ||||
* 判断表头是只有一行还是两行 | |||||
* 判断表头是只有一行还是多行 | |||||
*/ | */ | ||||
public int getRowNums(List<ExcelExportEntity> excelParams) { | |||||
public int getRowNums(List<ExcelExportEntity> excelParams,boolean isDeep) { | |||||
for (int i = 0; i < excelParams.size(); i++) { | for (int i = 0; i < excelParams.size(); i++) { | ||||
if (excelParams.get(i).getList() != null | if (excelParams.get(i).getList() != null | ||||
&& StringUtils.isNotBlank(excelParams.get(i).getName())) { | && StringUtils.isNotBlank(excelParams.get(i).getName())) { | ||||
return 2; | |||||
return isDeep? 1 + getRowNums(excelParams.get(i).getList() , isDeep) : 2; | |||||
} | } | ||||
if (StringUtils.isNoneEmpty(excelParams.get(i).getGroupName())) { | |||||
if (StringUtils.isNotEmpty(excelParams.get(i).getGroupName())) { | |||||
return 2; | return 2; | ||||
} | } | ||||
} | } | ||||
@@ -120,7 +120,7 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService { | |||||
Iterator<?> its = dataSet.iterator(); | Iterator<?> its = dataSet.iterator(); | ||||
while (its.hasNext()) { | while (its.hasNext()) { | ||||
Object t = its.next(); | Object t = its.next(); | ||||
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight); | |||||
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight, 0)[0]; | |||||
} | } | ||||
// 合并同类项 | // 合并同类项 | ||||
mergeCells(sheet, excelParams, titleHeight); | mergeCells(sheet, excelParams, titleHeight); | ||||
@@ -88,7 +88,7 @@ public class ImportBaseService { | |||||
if(excelEntityAnn != null && excelEntityAnn.show()){ | if(excelEntityAnn != null && excelEntityAnn.show()){ | ||||
excelEntity.setName(excelEntityAnn.name() + "_" + excelEntity.getName()); | excelEntity.setName(excelEntityAnn.name() + "_" + excelEntity.getName()); | ||||
} | } | ||||
if (i18nHandler == null) { | |||||
if (i18nHandler != null) { | |||||
excelEntity.setName(i18nHandler.getLocaleName(excelEntity.getName())); | excelEntity.setName(i18nHandler.getLocaleName(excelEntity.getName())); | ||||
} | } | ||||
excelEntity.setMethod(PoiReflectorUtil.fromCache(pojoClass).getSetMethod(field.getName())); | excelEntity.setMethod(PoiReflectorUtil.fromCache(pojoClass).getSetMethod(field.getName())); | ||||
@@ -137,7 +137,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { | |||||
} | } | ||||
} else { | } else { | ||||
if (object != null && hanlder != null) { | if (object != null && hanlder != null) { | ||||
hanlder.hanlder(object); | |||||
hanlder.handler(object); | |||||
} | } | ||||
object = PoiPublicUtil.createObject(pojoClass, targetId); | object = PoiPublicUtil.createObject(pojoClass, targetId); | ||||
SaxReadCellEntity entity; | SaxReadCellEntity entity; | ||||
@@ -26,6 +26,6 @@ public interface IExcelReadRowHandler<T> { | |||||
* 处理解析对象 | * 处理解析对象 | ||||
* @param t | * @param t | ||||
*/ | */ | ||||
public void hanlder(T t); | |||||
public void handler(T t); | |||||
} | } |
@@ -251,7 +251,7 @@ public class PdfExportServer extends ExportCommonService { | |||||
*/ | */ | ||||
private int createTitleRow(PdfExportParams title, PdfPTable table, | private int createTitleRow(PdfExportParams title, PdfPTable table, | ||||
List<ExcelExportEntity> excelParams) { | List<ExcelExportEntity> excelParams) { | ||||
int rows = getRowNums(excelParams); | |||||
int rows = getRowNums(excelParams, false); | |||||
for (int i = 0, exportFieldTitleSize = excelParams.size(); i < exportFieldTitleSize; i++) { | for (int i = 0, exportFieldTitleSize = excelParams.size(); i < exportFieldTitleSize; i++) { | ||||
ExcelExportEntity entity = excelParams.get(i); | ExcelExportEntity entity = excelParams.get(i); | ||||
if (entity.getList() != null) { | if (entity.getList() != null) { | ||||
@@ -100,7 +100,7 @@ public final class PoiMergeCellUtil { | |||||
if (mergeDataMap.size() > 0) { | if (mergeDataMap.size() > 0) { | ||||
for (Integer index : mergeDataMap.keySet()) { | for (Integer index : mergeDataMap.keySet()) { | ||||
if (mergeDataMap.get(index).getEndRow() > mergeDataMap.get(index).getStartRow()) { | if (mergeDataMap.get(index).getEndRow() > mergeDataMap.get(index).getStartRow()) { | ||||
PoiMergeCellUtil.addMergedRegion(sheet,mergeDataMap.get(index).getStartRow(), | |||||
PoiMergeCellUtil.addMergedRegion(sheet, mergeDataMap.get(index).getStartRow(), | |||||
mergeDataMap.get(index).getEndRow(), index, index); | mergeDataMap.get(index).getEndRow(), index, index); | ||||
} | } | ||||
} | } | ||||
@@ -127,7 +127,7 @@ public final class PoiMergeCellUtil { | |||||
mergeDataMap.get(index).setEndRow(rowNum); | mergeDataMap.get(index).setEndRow(rowNum); | ||||
} else { | } else { | ||||
if (mergeDataMap.get(index).getEndRow() > mergeDataMap.get(index).getStartRow()) { | if (mergeDataMap.get(index).getEndRow() > mergeDataMap.get(index).getStartRow()) { | ||||
PoiMergeCellUtil.addMergedRegion(sheet,mergeDataMap.get(index).getStartRow(), | |||||
PoiMergeCellUtil.addMergedRegion(sheet, mergeDataMap.get(index).getStartRow(), | |||||
mergeDataMap.get(index).getEndRow(), index, index); | mergeDataMap.get(index).getEndRow(), index, index); | ||||
} | } | ||||
mergeDataMap.put(index, createMergeEntity(text, rowNum, cell, delys)); | mergeDataMap.put(index, createMergeEntity(text, rowNum, cell, delys)); | ||||
@@ -149,7 +149,7 @@ public final class PoiMergeCellUtil { | |||||
if (mergeDataMap.containsKey(index) | if (mergeDataMap.containsKey(index) | ||||
&& mergeDataMap.get(index).getEndRow() != mergeDataMap.get(index).getStartRow()) { | && mergeDataMap.get(index).getEndRow() != mergeDataMap.get(index).getStartRow()) { | ||||
try { | try { | ||||
PoiMergeCellUtil.addMergedRegion(sheet,mergeDataMap.get(index).getStartRow(), | |||||
PoiMergeCellUtil.addMergedRegion(sheet, mergeDataMap.get(index).getStartRow(), | |||||
mergeDataMap.get(index).getEndRow(), index, index); | mergeDataMap.get(index).getEndRow(), index, index); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
@@ -215,6 +215,9 @@ public final class PoiMergeCellUtil { | |||||
try { | try { | ||||
sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol)); | sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol)); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
LOGGER.error("发生了一次合并单元格错误,{},{},{},{}", new Integer[]{ | |||||
firstRow, lastRow, firstCol, lastCol | |||||
}); | |||||
// 忽略掉合并的错误,不打印异常 | // 忽略掉合并的错误,不打印异常 | ||||
LOGGER.debug(e.getMessage(), e); | LOGGER.debug(e.getMessage(), e); | ||||
} | } | ||||