Преглед изворни кода

合并了map和entity的方法,因为是一致的.pdf提供了一点功能了

4.1.3.A
jueyue пре 9 година
родитељ
комит
a9c55d3a63
3 измењених фајлова са 93 додато и 83 уклоњено
  1. +18
    -70
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java
  2. +1
    -1
      easypoi-base/src/main/java/org/jeecgframework/poi/pdf/PdfExportUtil.java
  3. +74
    -12
      easypoi-base/src/main/java/org/jeecgframework/poi/pdf/export/PdfExportServer.java

+ 18
- 70
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java Прегледај датотеку

@@ -21,7 +21,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.CellStyle;
@@ -34,7 +33,6 @@ import org.jeecgframework.poi.excel.annotation.ExcelTarget;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants;
import org.jeecgframework.poi.excel.export.base.ExcelExportBase;
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler;
import org.jeecgframework.poi.exception.excel.ExcelExportException;
@@ -75,7 +73,8 @@ public class ExcelExportServer extends ExcelExportBase {
* @param workbook
* @param feildWidth
*/
public int createHeaderRow(ExportParams entity, Sheet sheet, Workbook workbook, int feildWidth) {
public int createHeaderRow(ExportParams entity, Sheet sheet, Workbook workbook,
int feildWidth) {
Row row = sheet.createRow(0);
row.setHeight(entity.getTitleHeight());
createStringCell(row, 0, entity.getTitle(),
@@ -105,32 +104,13 @@ public class ExcelExportServer extends ExcelExportBase {
Collection<?> dataSet) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Excel export start ,class is {}", pojoClass);
LOGGER.debug("Excel version is {}", entity.getType().equals(ExcelType.HSSF) ? "03"
: "07");
LOGGER.debug("Excel version is {}",
entity.getType().equals(ExcelType.HSSF) ? "03" : "07");
}
if (workbook == null || entity == null || pojoClass == null || dataSet == null) {
throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR);
}
super.type = entity.getType();
if (type.equals(ExcelType.XSSF)) {
MAX_NUM = 1000000;
}
Sheet sheet = null;
try {
sheet = workbook.createSheet(entity.getSheetName());
} catch (Exception e) {
// 重复遍历,出现了重名现象,创建非指定的名称Sheet
sheet = workbook.createSheet();
}
try {
dataHanlder = entity.getDataHanlder();
if (dataHanlder != null && dataHanlder.getNeedHandlerFields() != null) {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
}
// 创建表格样式
setExcelExportStyler((IExcelExportStyler) entity.getStyle()
.getConstructor(Workbook.class).newInstance(workbook));
Drawing patriarch = sheet.createDrawingPatriarch();
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
if (entity.isAddIndex()) {
excelParams.add(indexExcelEntity(entity));
@@ -139,42 +119,10 @@ public class ExcelExportServer extends ExcelExportBase {
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
String targetId = etarget == null ? null : etarget.value();
getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass, null);
sortAllParams(excelParams);
int index = entity.isCreateHeadRows() ? createHeaderAndTitle(entity, sheet, workbook,
excelParams) : 0;
int titleHeight = index;
setCellWith(excelParams, sheet);
short rowHeight = getRowHeight(excelParams);
setCurrentIndex(1);
Iterator<?> its = dataSet.iterator();
List<Object> tempList = new ArrayList<Object>();
while (its.hasNext()) {
Object t = its.next();
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight);
tempList.add(t);
if (index >= MAX_NUM)
break;
}
mergeCells(sheet, excelParams, titleHeight);
if (entity.getFreezeCol() != 0) {
sheet.createFreezePane(entity.getFreezeCol(), 0, entity.getFreezeCol(), 0);
}
its = dataSet.iterator();
for (int i = 0, le = tempList.size(); i < le; i++) {
its.next();
its.remove();
}
// 创建合计信息
addStatisticsRow(getExcelExportStyler().getStyles(true, null), sheet);
// 发现还有剩余list 继续循环创建Sheet
if (dataSet.size() > 0) {
createSheet(workbook, entity, pojoClass, dataSet);
}
getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass,
null);
//获取所有参数后,后面的逻辑判断就一致了
createSheetForMap(workbook, entity, excelParams, dataSet);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
LOGGER.error(e.getMessage(), e);
@@ -183,11 +131,10 @@ public class ExcelExportServer extends ExcelExportBase {
}
public void createSheetForMap(Workbook workbook, ExportParams entity,
List<ExcelExportEntity> entityList,
Collection<? extends Map<?, ?>> dataSet) {
List<ExcelExportEntity> entityList, Collection<?> dataSet) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Excel version is {}", entity.getType().equals(ExcelType.HSSF) ? "03"
: "07");
LOGGER.debug("Excel version is {}",
entity.getType().equals(ExcelType.HSSF) ? "03" : "07");
}
if (workbook == null || entity == null || entityList == null || dataSet == null) {
throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR);
@@ -218,8 +165,8 @@ public class ExcelExportServer extends ExcelExportBase {
}
excelParams.addAll(entityList);
sortAllParams(excelParams);
int index = entity.isCreateHeadRows() ? createHeaderAndTitle(entity, sheet, workbook,
excelParams) : 0;
int index = entity.isCreateHeadRows()
? createHeaderAndTitle(entity, sheet, workbook, excelParams) : 0;
int titleHeight = index;
setCellWith(excelParams, sheet);
short rowHeight = getRowHeight(excelParams);
@@ -247,6 +194,9 @@ public class ExcelExportServer extends ExcelExportBase {
// 发现还有剩余list 继续循环创建Sheet
if (dataSet.size() > 0) {
createSheetForMap(workbook, entity, entityList, dataSet);
} else {
// 创建合计信息
addStatisticsRow(getExcelExportStyler().getStyles(true, null), sheet);
}
} catch (Exception e) {
@@ -281,10 +231,8 @@ public class ExcelExportServer extends ExcelExportBase {
if (entity.getList() != null) {
List<ExcelExportEntity> sTitel = entity.getList();
if (StringUtils.isNotBlank(entity.getName())) {
sheet.addMergedRegion(new CellRangeAddress(index, index, cellIndex, cellIndex
+ 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(),


+ 1
- 1
easypoi-base/src/main/java/org/jeecgframework/poi/pdf/PdfExportUtil.java Прегледај датотеку

@@ -46,7 +46,7 @@ public class PdfExportUtil {
*/
public static Document exportPdf(ExportParams entity, Class<?> pojoClass, Collection<?> dataSet,
OutputStream outStream) {
return new PdfExportServer(outStream).createPdf(entity, pojoClass, dataSet);
return new PdfExportServer(outStream).createTable(entity, pojoClass, dataSet);
}
/**


+ 74
- 12
easypoi-base/src/main/java/org/jeecgframework/poi/pdf/export/PdfExportServer.java Прегледај датотеку

@@ -20,6 +20,7 @@ import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -49,7 +50,7 @@ public class PdfExportServer extends ExportBase {
private static final Logger LOGGER = LoggerFactory.getLogger(PdfExportServer.class);
private Document document;
private Document document;
public PdfExportServer(OutputStream outStream) {
try {
@@ -61,7 +62,14 @@ public class PdfExportServer extends ExportBase {
}
}
public Document createPdf(ExportParams entity, Class<?> pojoClass, Collection<?> dataSet) {
/**
* 创建Pdf的表格数据
* @param entity
* @param pojoClass
* @param dataSet
* @return
*/
public Document createTable(ExportParams entity, Class<?> pojoClass, Collection<?> dataSet) {
try {
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
if (entity.isAddIndex()) {
@@ -74,9 +82,20 @@ public class PdfExportServer extends ExportBase {
getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass,
null);
sortAllParams(excelParams);
int index = entity.isCreateHeadRows() ? createHeaderAndTitle(entity, excelParams) : 0;
int titleHeight = index;
//setCellWith(excelParams, sheet);
//设置各个列的宽度
float[] widths = getCellWidths(excelParams);
PdfPTable table = new PdfPTable(widths.length);
table.setTotalWidth(widths);
//table.setLockedWidth(true);
//设置表头
createHeaderAndTitle(entity, table, excelParams);
short rowHeight = getRowHeight(excelParams);
Iterator<?> its = dataSet.iterator();
while (its.hasNext()) {
Object t = its.next();
createCells(table, t, excelParams, rowHeight);
}
document.add(table);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
} finally {
@@ -85,17 +104,60 @@ public class PdfExportServer extends ExportBase {
return document;
}
private int createHeaderAndTitle(ExportParams entity,
List<ExcelExportEntity> excelParams) throws DocumentException {
PdfPTable table = new PdfPTable(excelParams.size());
private void createCells(PdfPTable table, Object t, List<ExcelExportEntity> excelParams,
short rowHeight) throws Exception {
ExcelExportEntity entity;
int maxHeight = 1, cellNum = 0;
//int indexKey = createIndexCell(row, index, excelParams.get(0));
//cellNum += indexKey;
for (int k = 0, paramSize = excelParams.size(); k < paramSize; k++) {
entity = excelParams.get(k);
if (entity.getList() != null) {
Collection<?> list = getListCellValue(entity, t);
int listC = 0;
for (Object obj : list) {
//createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), sheet,
// workbook);
listC++;
}
cellNum += entity.getList().size();
if (list != null && list.size() > maxHeight) {
maxHeight = list.size();
}
} else {
Object value = getCellValue(entity, t);
if (entity.getType() == 1) {
table.addCell(value == null ? "" : value.toString());
} else {
}
}
}
}
private float[] getCellWidths(List<ExcelExportEntity> excelParams) {
List<Float> widths = new ArrayList<Float>();
for (int i = 0; i < excelParams.size(); i++) {
table.addCell(new Phrase(excelParams.get(i).getName(), getFont()));
if (excelParams.get(i).getList() != null) {
List<ExcelExportEntity> list = excelParams.get(i).getList();
for (int j = 0; j < list.size(); j++) {
widths.add((float) (20 * list.get(j).getWidth()));
}
} else {
widths.add((float) (20 * excelParams.get(i).getWidth()));
}
}
float[] widthArr = new float[widths.size()];
for (int i = 0; i < widthArr.length; i++) {
widthArr[i] = widths.get(i);
}
return widthArr;
}
private void createHeaderAndTitle(ExportParams entity, PdfPTable table,
List<ExcelExportEntity> excelParams) throws DocumentException {
for (int i = 0; i < excelParams.size(); i++) {
table.addCell(new Phrase("test", getFont()));
table.addCell(new Phrase(excelParams.get(i).getName(), getFont()));
}
document.add(table);
return 0;
}
private Font getFont() {


Loading…
Откажи
Сачувај