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

增加了导出超链接的功能,还不是太完美

4.1.3.A
jueyue пре 9 година
родитељ
комит
aa4e7a1821
8 измењених фајлова са 82 додато и 24 уклоњено
  1. +6
    -0
      easypoi-annotation/src/main/java/org/jeecgframework/poi/excel/annotation/Excel.java
  2. +13
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelBaseEntity.java
  3. +1
    -1
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java
  4. +30
    -19
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java
  5. +1
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java
  6. +7
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java
  7. +13
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java
  8. +11
    -4
      pom.xml

+ 6
- 0
easypoi-annotation/src/main/java/org/jeecgframework/poi/excel/annotation/Excel.java Прегледај датотеку

@@ -123,4 +123,10 @@ public @interface Excel {
* @return
*/
public boolean isStatistics() default false;
/**
* 这个是不是超链接,如果是需要实现接口返回对象
* @return
*/
public boolean isHyperlink() default false;
}

+ 13
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelBaseEntity.java Прегледај датотеку

@@ -48,6 +48,11 @@ public class ExcelBaseEntity {
* set/get方法
*/
private Method method;
/**
* 这个是不是超链接,如果是需要实现接口返回对象
* @return
*/
private boolean hyperlink;
private List<Method> methods;
@@ -107,4 +112,12 @@ public class ExcelBaseEntity {
this.type = type;
}
public boolean isHyperlink() {
return hyperlink;
}
public void setHyperlink(boolean hyperlink) {
this.hyperlink = hyperlink;
}
}

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

@@ -124,7 +124,7 @@ public class ExcelExportServer extends ExcelExportBase {
}
try {
dataHanlder = entity.getDataHanlder();
if (dataHanlder != null) {
if (dataHanlder != null && dataHanlder.getNeedHandlerFields() != null) {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
}
// 创建表格样式


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

@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -45,7 +44,6 @@ import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.entity.params.MergeEntity;
import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants;
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler;
import org.jeecgframework.poi.util.PoiMergeCellUtil;
@@ -61,18 +59,17 @@ import org.slf4j.LoggerFactory;
*/
public abstract class ExcelExportBase extends ExportBase {
private static final Logger LOGGER = LoggerFactory
.getLogger(ExcelExportBase.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelExportBase.class);
private int currentIndex = 0;
private int currentIndex = 0;
protected ExcelType type = ExcelType.HSSF;
protected ExcelType type = ExcelType.HSSF;
private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
private IExcelExportStyler excelExportStyler;
private IExcelExportStyler excelExportStyler;
/**
* 创建 最主要的 Cells
@@ -96,8 +93,8 @@ public abstract class ExcelExportBase extends ExportBase {
Collection<?> list = getListCellValue(entity, t);
int listC = 0;
for (Object obj : list) {
createListCells(patriarch, index + listC, cellNum, obj, entity.getList(),
sheet, workbook);
createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), sheet,
workbook);
listC++;
}
cellNum += entity.getList().size();
@@ -108,7 +105,14 @@ public abstract class ExcelExportBase extends ExportBase {
Object value = getCellValue(entity, t);
if (entity.getType() == 1) {
createStringCell(row, cellNum++, value == null ? "" : value.toString(),
index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), entity);
index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), t,
entity.getName(), value));
}
} else {
createImageCell(patriarch, entity, row, cellNum++,
value == null ? "" : value.toString(), t);
@@ -126,8 +130,8 @@ public abstract class ExcelExportBase extends ExportBase {
sheet.getRow(i).createCell(cellNum);
sheet.getRow(i).getCell(cellNum).setCellStyle(getStyles(false, entity));
}
sheet.addMergedRegion(new CellRangeAddress(index, index + maxHeight - 1, cellNum,
cellNum));
sheet.addMergedRegion(
new CellRangeAddress(index, index + maxHeight - 1, cellNum, cellNum));
cellNum++;
}
}
@@ -180,8 +184,9 @@ public abstract class ExcelExportBase extends ExportBase {
LOGGER.error(e.getMessage(), e);
}
} else {
byte[] value = (byte[]) (entity.getMethods() != null ? getFieldBySomeMethod(
entity.getMethods(), obj) : entity.getMethod().invoke(obj, new Object[] {}));
byte[] value = (byte[]) (entity.getMethods() != null
? getFieldBySomeMethod(entity.getMethods(), obj)
: entity.getMethod().invoke(obj, new Object[] {}));
if (value != null) {
patriarch.createPicture(anchor,
row.getSheet().getWorkbook().addPicture(value, getImageType(value)));
@@ -193,8 +198,8 @@ public abstract class ExcelExportBase extends ExportBase {
private int createIndexCell(Row row, int index, ExcelExportEntity excelExportEntity) {
if (excelExportEntity.getName().equals("序号")
&& excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) {
createStringCell(row, 0, currentIndex + "", index % 2 == 0 ? getStyles(false, null)
: getStyles(true, null), null);
createStringCell(row, 0, currentIndex + "",
index % 2 == 0 ? getStyles(false, null) : getStyles(true, null), null);
currentIndex = currentIndex + 1;
return 1;
}
@@ -207,8 +212,8 @@ public abstract class ExcelExportBase extends ExportBase {
* @param styles
*/
public void createListCells(Drawing patriarch, int index, int cellNum, Object obj,
List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook)
throws Exception {
List<ExcelExportEntity> excelParams, Sheet sheet,
Workbook workbook) throws Exception {
ExcelExportEntity entity;
Row row;
if (sheet.getRow(index) == null) {
@@ -224,6 +229,12 @@ public abstract class ExcelExportBase extends ExportBase {
createStringCell(row, cellNum++, value == null ? "" : value.toString(),
row.getRowNum() % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
value));
}
} else {
createImageCell(patriarch, entity, row, cellNum++,
value == null ? "" : value.toString(), obj);


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

@@ -236,6 +236,7 @@ public class ExportBase {
excelEntity.setFormat(StringUtils.isNotEmpty(excel.exportFormat()) ? excel.exportFormat()
: excel.format());
excelEntity.setStatistics(excel.isStatistics());
excelEntity.setHyperlink(excel.isHyperlink());
String fieldname = field.getName();
excelEntity.setMethod(PoiPublicUtil.getMethod(fieldname, pojoClass));
}


+ 7
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java Прегледај датотеку

@@ -17,6 +17,8 @@ package org.jeecgframework.poi.handler.impl;
import java.util.Map;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.jeecgframework.poi.handler.inter.IExcelDataHandler;
/**
@@ -56,4 +58,9 @@ public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler {
map.put(originKey, value);
}
@Override
public Hyperlink getHyperlink(CreationHelper creationHelper, Object obj, String name, Object value) {
return null;
}
}

+ 13
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java Прегледај датотеку

@@ -17,6 +17,9 @@ package org.jeecgframework.poi.handler.inter;
import java.util.Map;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Hyperlink;
/**
* Excel 导入导出 数据处理接口
*
@@ -72,4 +75,14 @@ public interface IExcelDataHandler {
*/
public void setMapValue(Map<String, Object> map, String originKey, Object value);
/**
* 获取这个字段的 {@Hyperlink},07版本需要,03版本不需要
* @param wb
* @param obj
* @param name
* @param value
* @return
*/
public Hyperlink getHyperlink(CreationHelper creationHelper, Object obj, String name, Object value);
}

+ 11
- 4
pom.xml Прегледај датотеку

@@ -23,10 +23,10 @@
</licenses>
<scm>
<connection>scm:git@git.oschina.net:jueyue/easypoi.git</connection>
<developerConnection>scm:git@git.oschina.net:jueyue/easypoi.git</developerConnection>
<url>git@git.oschina.net:jueyue/easypoi.git</url>
</scm>
<connection>scm:git@git.oschina.net:jueyue/easypoi.git</connection>
<developerConnection>scm:git@git.oschina.net:jueyue/easypoi.git</developerConnection>
<url>git@git.oschina.net:jueyue/easypoi.git</url>
</scm>
<developers>
<developer>
@@ -63,6 +63,12 @@
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
<version>${poi.version}</version>
</dependency>
<!-- sax 读取时候用到的 -->
@@ -76,6 +82,7 @@
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>${poi.version}</version>
<optional>true</optional>
</dependency>
<!-- google 工具类 -->


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