diff --git a/.project b/.project
new file mode 100644
index 0000000..2a6c952
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ easypoi
+
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..14b697b
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/deploy.bat b/deploy.bat
new file mode 100644
index 0000000..92a7c3f
--- /dev/null
+++ b/deploy.bat
@@ -0,0 +1 @@
+cmd /k mvn clean deploy -DskipTest
\ No newline at end of file
diff --git a/easypoi-base/.classpath b/easypoi-base/.classpath
new file mode 100644
index 0000000..2aabaef
--- /dev/null
+++ b/easypoi-base/.classpath
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/easypoi-base/.project b/easypoi-base/.project
new file mode 100644
index 0000000..354e3e6
--- /dev/null
+++ b/easypoi-base/.project
@@ -0,0 +1,23 @@
+
+
+ easypoi-base
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/easypoi-base/.settings/org.eclipse.core.resources.prefs b/easypoi-base/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..1f887b6
--- /dev/null
+++ b/easypoi-base/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
diff --git a/easypoi-base/.settings/org.eclipse.jdt.core.prefs b/easypoi-base/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..14f521d
--- /dev/null
+++ b/easypoi-base/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/easypoi-base/.settings/org.eclipse.m2e.core.prefs b/easypoi-base/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..14b697b
--- /dev/null
+++ b/easypoi-base/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/easypoi-base/pom.xml b/easypoi-base/pom.xml
new file mode 100644
index 0000000..3fb8ca9
--- /dev/null
+++ b/easypoi-base/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+
+ org.jeecgframework
+ easypoi
+ 2.0.1
+
+ easypoi-base
+
+
+
+ org.apache.poi
+ poi
+
+
+ org.apache.poi
+ poi-ooxml
+
+
+ org.apache.poi
+ poi-ooxml-schemas
+
+
+ org.apache.poi
+ poi-scratchpad
+
+
+
+
+ com.google.guava
+ guava
+
+
+
+ commons-lang
+ commons-lang
+
+
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+
\ No newline at end of file
diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/ExcelCache.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/ExcelCache.java
new file mode 100644
index 0000000..81d5cee
--- /dev/null
+++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/ExcelCache.java
@@ -0,0 +1,46 @@
+package org.jeecgframework.poi.cache;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.jeecgframework.poi.cache.manager.POICacheManager;
+
+/**
+ * Excel类型的缓存
+ *
+ * @author JueYue
+ * @date 2014年2月11日
+ * @version 1.0
+ */
+public final class ExcelCache {
+
+ public static Workbook getWorkbook(String url, int index) {
+ InputStream is = null;
+ try {
+ is = POICacheManager.getFile(url);
+ Workbook wb = WorkbookFactory.create(is);
+ // 删除其他的sheet
+ for (int i = wb.getNumberOfSheets() - 1; i >= 0; i--) {
+ if (i != index) {
+ wb.removeSheetAt(i);
+ }
+ }
+ return wb;
+ } catch (InvalidFormatException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally{
+ try {
+ is.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java
new file mode 100644
index 0000000..8d6c660
--- /dev/null
+++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java
@@ -0,0 +1,52 @@
+package org.jeecgframework.poi.cache.manager;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.jeecgframework.poi.util.ExcelPublicUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 文件加载类,根据路径加载指定文件
+ * @author JueYue
+ * @date 2014年2月10日
+ * @version 1.0
+ */
+class FileLoade {
+
+ private static final Logger logger = LoggerFactory.getLogger(FileLoade.class);
+
+ public byte[] getFile(String url){
+ FileInputStream fileis = null;
+ ByteArrayOutputStream baos = null;
+ try {
+ String path = ExcelPublicUtil.getWebRootPath(url);
+ fileis = new FileInputStream(path);
+ baos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int len;
+ while ((len = fileis.read(buffer)) > -1) {
+ baos.write(buffer, 0, len);
+ }
+ baos.flush();
+ return baos.toByteArray();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally{
+ try {
+ if(fileis!=null)fileis.close();
+ if(fileis!=null)baos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ logger.error(fileis +"这个路径文件没有找到,请查询");
+ return null;
+ }
+
+}
diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java
new file mode 100644
index 0000000..1a3d7fd
--- /dev/null
+++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java
@@ -0,0 +1,45 @@
+package org.jeecgframework.poi.cache.manager;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+
+/**
+ * 缓存管理
+ *
+ * @author JueYue
+ * @date 2014年2月10日
+ * @version 1.0
+ */
+public final class POICacheManager {
+
+ private static LoadingCache loadingCache;
+
+ static {
+ loadingCache = CacheBuilder.newBuilder()
+ .expireAfterWrite(1, TimeUnit.DAYS).maximumSize(50)
+ .build(new CacheLoader() {
+ @Override
+ public byte[] load(String url) throws Exception {
+ return new FileLoade().getFile(url);
+ }
+ });
+ }
+ public static InputStream getFile(String id) {
+ try {
+ //复杂数据,防止操作原数据
+ byte[] result = Arrays.copyOf(loadingCache.get(id), loadingCache.get(id).length);
+ return new ByteArrayInputStream(result);
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/package-info.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/package-info.java
new file mode 100644
index 0000000..5d6d9c9
--- /dev/null
+++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/package-info.java
@@ -0,0 +1,11 @@
+/**
+ * 对POI用到的模板进行缓存,进行统一管理,缓存工具暂时使用guava(脱离配置文件)
+ * 缓存方式统一为byte[] 屏蔽文件类型的差异
+ * 缓存获取方式,URL或者URL+index(EXcel的)
+ */
+/**
+ * @author JueYue
+ * @date 2014年2月10日
+ * @version 1.0
+ */
+package org.jeecgframework.poi.cache;
\ No newline at end of file
diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java
new file mode 100644
index 0000000..aadd3ea
--- /dev/null
+++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java
@@ -0,0 +1,93 @@
+package org.jeecgframework.poi.excel;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.*;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.TemplateExportParams;
+import org.jeecgframework.poi.excel.export.ExcelExportServer;
+import org.jeecgframework.poi.excel.export.template.ExcelExportOfTemplateUtil;
+
+/**
+ * excel 导出工具类
+ *
+ * @author jueyue
+ * @version 1.0
+ * @date 2013-10-17
+ */
+public final class ExcelExportUtil {
+
+ /**
+ * 一个excel 创建多个sheet
+ *
+ * @param list
+ * 多个Map key title 对应表格Title key entity 对应表格对应实体 key data
+ * Collection 数据
+ * @return
+ */
+ public static HSSFWorkbook exportExcel(List