Browse Source

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

4.1.3.A
jueyue 9 years ago
parent
commit
aa4e7a1821
8 changed files with 82 additions and 24 deletions
  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 View File

@@ -123,4 +123,10 @@ public @interface Excel {
* @return * @return
*/ */
public boolean isStatistics() default false; 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 View File

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

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


+ 30
- 19
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java View File

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


+ 1
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java View File

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


+ 7
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java View File

@@ -17,6 +17,8 @@ package org.jeecgframework.poi.handler.impl;
import java.util.Map; 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; import org.jeecgframework.poi.handler.inter.IExcelDataHandler;
/** /**
@@ -56,4 +58,9 @@ public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler {
map.put(originKey, value); 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 View File

@@ -17,6 +17,9 @@ package org.jeecgframework.poi.handler.inter;
import java.util.Map; import java.util.Map;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Hyperlink;
/** /**
* Excel 导入导出 数据处理接口 * Excel 导入导出 数据处理接口
* *
@@ -72,4 +75,14 @@ public interface IExcelDataHandler {
*/ */
public void setMapValue(Map<String, Object> map, String originKey, Object value); 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 View File

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


Loading…
Cancel
Save