diff --git a/README.md b/README.md
index 6e2fe76..abb48d6 100644
--- a/README.md
+++ b/README.md
@@ -58,17 +58,17 @@ https://oss.sonatype.org/content/repositories/snapshots/
org.jeecg
easypoi-base
- 2.1.6
+ 2.3.0
org.jeecg
easypoi-web
- 2.1.6
+ 2.3.0
org.jeecg
easypoi-annotation
- 2.1.6
+ 2.3.0
```
@@ -173,7 +173,17 @@ word和sax读取的时候才使用,就不是必须的了,请手动引用,JSR303
--------------------------
版本修改
--------------------------
-
+ - 2.3.0 修复bug,推荐更新
+ - 提供的PDF基础的Excel导出支持
+ - 提供了Excel Charts的导出支持
+ - 升级了POI
+ - 提供了Word换行支持
+ - 图片提供统一缓存
+ - 增加Cell取值工具,自动分辨合并单元格和独立单元格
+ - 修复合并单元格,获取cell改为递归,之前判断有问题
+ - 修改了下,el表达式的==判断,给fe加上了样式自定义方法
+ - 修复if(),单字段的判断
+ - 修复其他一些bug
- 2.1.6 校验规则不向下兼容,升级请自行考虑
- 其实不想升的,不过有必要的bug要修复,所以就先生上来吧
- 升级交易为hibernate校验,hibernate的maven自己配置可选
@@ -364,17 +374,14 @@ EasyPoi导出实例
8.Excel导入校验,过滤不符合规则的数据,追加错误信息到Excel,提供常用的校验规则,已经通用的校验接口
```Java
- /**
- * Email校验
- */
@Excel(name = "Email", width = 25)
- @ExcelVerify(isEmail = true, notNull = true)
- private String email;
+ @Max(value = 15,message = "max 最大值不能超过15")
+ private int email;
/**
- * 手机号校验
+ * 手机号
*/
@Excel(name = "Mobile", width = 20)
- @ExcelVerify(isMobile = true, notNull = true)
+ @NotNull
private String mobile;
ExcelImportResult result = ExcelImportUtil.importExcelVerify(new File(
diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/pdf/export/PdfExportServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/pdf/export/PdfExportServer.java
index c644346..2ae7937 100644
--- a/easypoi-base/src/main/java/org/jeecgframework/poi/pdf/export/PdfExportServer.java
+++ b/easypoi-base/src/main/java/org/jeecgframework/poi/pdf/export/PdfExportServer.java
@@ -25,6 +25,7 @@ import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.util.IOUtils;
import org.jeecgframework.poi.cache.ImageCache;
import org.jeecgframework.poi.excel.annotation.ExcelTarget;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
@@ -95,7 +96,11 @@ public class PdfExportServer extends ExportBase {
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
} finally {
- document.close();
+ try {
+ document.close();
+ } catch (Exception e) {
+ //可能之前已经关闭过了
+ }
}
return document;
}
@@ -129,6 +134,8 @@ public class PdfExportServer extends ExportBase {
LOGGER.error(e.getMessage(), e);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
+ } finally {
+ document.close();
}
return document;
}
diff --git a/easypoi-web/build.gradle b/easypoi-web/build.gradle
index ce8b078..cb7f70b 100644
--- a/easypoi-web/build.gradle
+++ b/easypoi-web/build.gradle
@@ -4,6 +4,8 @@ dependencies {
compile group: 'org.springframework', name: 'spring-web', version:'3.1.1.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version:'3.1.1.RELEASE'
compile group: 'org.springframework', name: 'spring-core', version:'3.1.1.RELEASE'
+ compile group: 'org.springframework', name: 'spring-core', version:'3.1.1.RELEASE'
+ compile group: 'com.itextpdf', name: 'itextpdf', version:'5.5.6'
compile project(':easypoi-base')
compile(group: 'javax.servlet', name: 'servlet-api', version:'2.5') {
/* This dependency was originally in the Maven provided scope, but the project was not of type war.
diff --git a/easypoi-web/pom.xml b/easypoi-web/pom.xml
index ac8db3c..bf57cdf 100644
--- a/easypoi-web/pom.xml
+++ b/easypoi-web/pom.xml
@@ -28,6 +28,13 @@
provided
+
+
+ com.itextpdf
+ itextpdf
+ true
+
+
org.jeecg
easypoi-base
diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/entity/vo/PDFTemplateConstants.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/entity/vo/PDFTemplateConstants.java
new file mode 100644
index 0000000..93048ee
--- /dev/null
+++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/entity/vo/PDFTemplateConstants.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com)
+ *
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jeecgframework.poi.excel.entity.vo;
+
+public interface PDFTemplateConstants extends BasePOIConstants {
+
+ /**
+ * PDF
+ */
+ public final static String PDF_TEMPLATE_VIEW = "pdfTemplateView";
+ /**
+ * Entity List
+ */
+ public final static String ENTITY_LIST = "EntityList";
+ /**
+ * 数据列表
+ */
+ public final static String DATA_LIST = "dataList";
+
+}
diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgTemplateWordView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgTemplateWordView.java
index e27f262..e543eb9 100644
--- a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgTemplateWordView.java
+++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgTemplateWordView.java
@@ -25,7 +25,6 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.jeecgframework.poi.excel.entity.vo.TemplateWordConstants;
import org.jeecgframework.poi.word.WordExportUtil;
import org.springframework.stereotype.Controller;
-import org.springframework.web.servlet.view.AbstractView;
/**
* Word模板视图
@@ -35,7 +34,7 @@ import org.springframework.web.servlet.view.AbstractView;
*/
@SuppressWarnings("unchecked")
@Controller(TemplateWordConstants.JEECG_TEMPLATE_WORD_VIEW)
-public class JeecgTemplateWordView extends AbstractView {
+public class JeecgTemplateWordView extends PoiBaseView {
private static final String CONTENT_TYPE = "application/msword";
@@ -43,11 +42,6 @@ public class JeecgTemplateWordView extends AbstractView {
setContentType(CONTENT_TYPE);
}
- public boolean isIE(HttpServletRequest request) {
- return (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0 || request
- .getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0) ? true : false;
- }
-
@Override
protected void renderMergedOutputModel(Map model, HttpServletRequest request,
HttpServletResponse response) throws Exception {
diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MapGraphExcelView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MapGraphExcelView.java
index 4e17ec8..8597caa 100644
--- a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MapGraphExcelView.java
+++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MapGraphExcelView.java
@@ -18,7 +18,6 @@ package org.jeecgframework.poi.excel.view;
import java.util.List;
import java.util.Map;
-import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MiniAbstractExcelView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MiniAbstractExcelView.java
index b08c86a..d903ee7 100644
--- a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MiniAbstractExcelView.java
+++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/MiniAbstractExcelView.java
@@ -15,16 +15,12 @@
*/
package org.jeecgframework.poi.excel.view;
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.web.servlet.view.AbstractView;
-
/**
* 基础抽象Excel View
* @author JueYue
* @date 2015年2月28日 下午1:41:05
*/
-public abstract class MiniAbstractExcelView extends AbstractView {
+public abstract class MiniAbstractExcelView extends PoiBaseView {
private static final String CONTENT_TYPE = "application/vnd.ms-excel";
@@ -35,9 +31,4 @@ public abstract class MiniAbstractExcelView extends AbstractView {
setContentType(CONTENT_TYPE);
}
- protected boolean isIE(HttpServletRequest request) {
- return (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0 || request
- .getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0) ? true : false;
- }
-
}
diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/PDFTemplateView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/PDFTemplateView.java
new file mode 100644
index 0000000..2b1849e
--- /dev/null
+++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/PDFTemplateView.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com)
+ *
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jeecgframework.poi.excel.view;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
+import org.jeecgframework.poi.excel.entity.vo.PDFTemplateConstants;
+import org.jeecgframework.poi.pdf.PdfExportUtil;
+import org.jeecgframework.poi.pdf.entity.PdfExportParams;
+import org.springframework.stereotype.Controller;
+
+/**
+ * PDF 导出 View
+ * @author JueYue
+ * @date 2016年1月19日 上午10:43:02
+ */
+@Controller(PDFTemplateConstants.PDF_TEMPLATE_VIEW)
+public class PDFTemplateView extends PoiBaseView {
+
+ public PDFTemplateView() {
+ setContentType("application/pdf");
+ }
+
+ @Override
+ protected boolean generatesDownloadContent() {
+ return true;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected final void renderMergedOutputModel(Map model,
+ HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ String fileName = "临时文件";
+ ByteArrayOutputStream baos = createTemporaryOutputStream();
+ PdfExportParams entity = (PdfExportParams) model.get(PDFTemplateConstants.PARAMS);
+ Class> pojoClass = (Class>) model.get(PDFTemplateConstants.CLASS);
+ Collection> dataSet = (Collection>) model.get(PDFTemplateConstants.DATA_LIST);
+ List entityList = (List) model
+ .get(PDFTemplateConstants.ENTITY_LIST);
+ if (entityList == null) {
+ PdfExportUtil.exportPdf(entity, pojoClass, dataSet, baos);
+ } else {
+ PdfExportUtil.exportPdf(entity, entityList, (Collection extends Map, ?>>) dataSet,
+ baos);
+ }
+ String userFileName = (String) model.get(PDFTemplateConstants.FILE_NAME);
+ if (StringUtils.isNoneBlank(userFileName)) {
+ fileName = userFileName;
+ }
+ if (isIE(request)) {
+ fileName = java.net.URLEncoder.encode(fileName, "UTF8");
+ } else {
+ fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
+ }
+ response.setHeader("content-disposition", "attachment;filename=" + fileName + ".pdf");
+ writeToResponse(response, baos);
+ }
+
+}
diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/PoiBaseView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/PoiBaseView.java
new file mode 100644
index 0000000..f558e71
--- /dev/null
+++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/PoiBaseView.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com)
+ *
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jeecgframework.poi.excel.view;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.web.servlet.view.AbstractView;
+
+/**
+ * 提供一些通用结构
+ */
+public abstract class PoiBaseView extends AbstractView {
+
+
+ protected boolean isIE(HttpServletRequest request) {
+ return (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0
+ || request.getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0
+ || request.getHeader("USER-AGENT").toLowerCase().indexOf("edge") > 0) ? true
+ : false;
+ }
+
+}