diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c9da457d..76e5b481 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -19,25 +19,34 @@ name: Java CI
on: [push, pull_request]
jobs:
- build:
+ test:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [ 8, 11, 17]
+ distribution: [ 'adopt' ]
+ fail-fast: false
+ max-parallel: 4
+ name: Test JDK ${{ matrix.java }}
steps:
- uses: actions/checkout@v2
- - name: Set up JDK 8
+ - name: Set up JDK
uses: actions/setup-java@v2
with:
- java-version: '8'
- distribution: 'adopt'
+ java-version: ${{ matrix.java }}
+ distribution: ${{ matrix.distribution }}
- name: Cache Maven
- uses: actions/cache@v2.1.6
+ uses: actions/cache@v2
with:
path: ~/.m2
key: m2
restore-keys: m2
- name: Chmod
run: chmod +x mvnw
+ - name: Test with Maven
+ run: ./mvnw test -B -Dmaven.test.skip=false
- name: Maven Build
- run: ./mvnw install -B -V -Dmaven.test.skip=true
+ run: ./mvnw install -B -V
- name: Java Doc
run: ./mvnw javadoc:javadoc
diff --git a/.gitignore b/.gitignore
index fac9ab5f..93472b7d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,5 @@ target/
*.iws
antx.properties
output/
+.flattened-pom.xml
+dependency-reduced-pom.xml
diff --git a/.mvn/jvm.config b/.mvn/jvm.config
deleted file mode 100644
index f432c960..00000000
--- a/.mvn/jvm.config
+++ /dev/null
@@ -1 +0,0 @@
--Xmx1536m
\ No newline at end of file
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
index e89f07c2..c1dd12f1 100644
Binary files a/.mvn/wrapper/maven-wrapper.jar and b/.mvn/wrapper/maven-wrapper.jar differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index bdc03cb2..e83fa695 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,18 @@
-distributionUrl=https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar
\ No newline at end of file
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
diff --git a/README.md b/README.md
index 4c0f299f..ca1c4c36 100644
--- a/README.md
+++ b/README.md
@@ -27,9 +27,31 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都
当然还有极速模式能更快,但是内存占用会在100M多一点
![img](img/readme/large.png)
-## 版本支持
-* 2+ 版本支持 Java7和Java6
-* 3+ 版本至少 Java8
+## 关于版本选择
+如果项目中没有使用过poi,且jdk版本在8-17之间,直接使用最新版本,别犹豫。以下表格适用于不满足以上2个情况的。
+
+| 版本 | poi依赖版本 (支持范围) | jdk版本支持范围 | 备注 |
+|--------------------|-----------------------|--------------|---------------------------------------------|
+| 3.1.0+ | 4.1.2 (4.1.2 - 5.2.2) | jkd8 - jdk17 | 推荐使用,会更新的版本 |
+| 3.0.0-beta1 - 3.0.5 | 4.1.2 (4.1.2 - 5.2.2) | jkd8 - jdk11 | 不推荐项目新引入此版本,除非超级严重bug,否则不再更新 |
+| 2.0.0-beta1-2.2.11 | 3.17 (3.17 - 4.1.2) | jdk6 - jdk11 | 不推荐项目新引入此版本,除非是jdk6否则不推荐使用,除非超级严重bug,否则不再更新 |
+| 1+版本 | 3.17 (3.17 - 4.1.2) | jdk6 - jdk11 | 不推荐项目新引入此版本,超级严重bug,也不再更新 |
+
+注意: 3+版本的的easyexcel,使用poi 5+版本时,需要手动排除:poi-ooxml-schemas,例如:
+```xml
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ poi-ooxml-schemas
+ org.apache.poi
+
+
+
+```
+
### 关于版本升级
* 不建议跨大版本升级 尤其跨2个大版本
* 2+ 升级到 3+ 一些不兼容的地方
@@ -43,7 +65,7 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都
com.alibabaeasyexcel
- 3.0.5
+ 3.1.0
```
@@ -67,7 +89,7 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都
姬朋飞(玉霄)、庄家钜、怀宇
## 快速开始
### 读Excel
-DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/demo/read/ReadTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java)
+DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/demo/read/ReadTest.java](/easyexcel-core/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java)
```java
/**
@@ -85,7 +107,7 @@ DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/ja
```
### 写Excel
-DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java)
+DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java](/easyexcel-core/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java)
```java
/**
* 最简单的写
@@ -102,7 +124,7 @@ DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/ja
```
### web上传、下载
-DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java)
+DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java](/easyexcel-core/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java)
```java
/**
* 文件下载(失败了会返回一个有部分数据的Excel)
diff --git a/README_EN.md b/README_EN.md
new file mode 100644
index 00000000..ae787bbb
--- /dev/null
+++ b/README_EN.md
@@ -0,0 +1,156 @@
+EasyExcel
+======================
+[![Build Status](https://github.com/alibaba/easyexcel/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/alibaba/easyexcel/actions/workflows/ci.yml?query=branch%3Amaster)
+[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.alibaba/easyexcel/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.alibaba/easyexcel)
+[![License](http://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)
+
+[Communication Group 1 in QQ(Full): 662022184](https://jq.qq.com/?_wv=1027&k=1T21jJxh)
+[Communication Group 2 in QQ(Full): 1097936804](https://jq.qq.com/?_wv=1027&k=j5zEy6Xl)
+[Communication Group 3 in QQ(Full): 453928496](https://qm.qq.com/cgi-bin/qm/qr?k=e2ULsA5A0GldhV2CXJ8sIbAyu9I6qqs7&jump_from=webapi)
+[Communication Group 4 in QQ: 496594404](https://qm.qq.com/cgi-bin/qm/qr?k=e_aVG1Q7gi0PJUBkbrUGAgbeO3kUEInK&jump_from=webapi)
+[Communication Group 1 in DingTalk(Full): 21960511](https://qr.dingtalk.com/action/joingroup?code=v1,k1,cchz6k12ci9B08NNqhNRFGXocNVHrZtW0kaOtTKg/Rk=&_dt_no_comment=1&origin=11)
+[Communication Group 2 in DingTalk(Full): 32796397](https://qr.dingtalk.com/action/joingroup?code=v1,k1,jyU9GtEuNU5S0QTyklqYcYJ8qDZtUuTPMM7uPZTS8Hs=&_dt_no_comment=1&origin=11)
+[Communication Group 3 in DingTalk(Full): 33797247](https://qr.dingtalk.com/action/joingroup?code=v1,k1,3UGlEScTGQaHpW2cIRo+gkxJ9EVZ5fz26M6nW3uFP30=&_dt_no_comment=1&origin=11)
+[Communication Group 4 in DingTalk(Full): 33491624](https://qr.dingtalk.com/action/joingroup?code=v1,k1,V14Pb65Too70rQkEaJ9ohb6lZBZbtp6jIL/q9EWh9vA=&_dt_no_comment=1&origin=11)
+[Communication Group 5 in DingTalk: 32134498](https://h5.dingtalk.com/circle/healthCheckin.html?dtaction=os&corpId=dingb9fa1325d9dccc3ecac589edd02f1650&5233a=71a83&cbdbhh=qwertyuiop)
+[Official Website: https://yuque.com/easyexcel](https://www.yuque.com/easyexcel/doc/easyexcel)
+
+[FAQ](https://www.yuque.com/easyexcel/faq)
+#### It is recommended to join a DingTalk group
+
+# EasyExcel, a java toolkit for parsing Excel easily
+There are several java frameworks or toolkit which can parse and generate Excel, such as Apache POI or jxl. But they all have some difficulties to handle problems like excessive memory usage. Apache POI framework has a set of SAX mode API can fix some memory overflow problems at some extent, but it still has some flaws. For example, the unzipping and the storage of the unzipping of Excel file in version 07 are done in memory, so the memory consumption is still very high. The EasyExcel toolkit rewrites the logic of POI for parsing Excel version 07. One 3 megabytes Excel file parsed with POI still requires about 100M memory, which can be reduced to a few megabyte by using EasyExcel instead. And yes, there is no memory overflow for even larger excel with EasyExcel. EasyExcel version 03 depends on POI SAX model and does model transformation/encapsulation in the upper layer to make it simpler and more convenient for users.
+
+## Using EasyExcel version 3.0.2+, a machine with 64M RAM can read a 75 megabyte Excel file containing 460,000 rows and 25 columns in 20 seconds
+Of course, there is also a very fast mode can be faster, but the memory consumption will be a little more than 100M
+![img](img/readme/large.png)
+
+## Version support
+* EasyExcel version 2+ works on Java7 or Java6
+* EasyExcel version 3+ works on Java8 or java8+
+### About version upgrade
+* It is not recommended upgrading across major versions, especially across 2 major versions.
+* There are some incompatibilities in upgrading from version 2+ to version 3+.
+ * Using a custom interceptor to modify the style can cause problems, even if it does not compile with errors.
+ * When reading the Excel file, the `invoke` function will throw an exception, there will not be an additional layer of `ExcelAnalysisException` wrapped here, and it will not compile with errors.
+ * Style and other annotations involving `boolean` or some enumeration values have been changed, adding the default value. The compiler will report an error, just change the annotation.
+* It is recommended to re-test the relevant functions after upgrading across major versions.
+
+### Latest Version
+```xml
+
+ com.alibaba
+ easyexcel
+ 3.0.2
+
+```
+
+## Advertising space
+### Alibaba New Retail Business Department Recruitment
+Alibaba New Retail Business Department sincerely recruit JAVA senior development, technical experts. If you are interested, you can contact us by WeChat, or send your Resume to my email jipengfei.jpf@alibaba-inc.com.
+### EasyExcel personnel recruitment
+Anyone who wants to participate in this project can apply, mainly responsible for answering questions in the communication group and dealing with the issues. Of course, you can also do some PR.
+Since there is no material reward for participating in the open source project, and the current maintainers are also maintaining the project in their spare time. So people who want to join this project need to be persistent, not just on a whim.
+The requirements are as follows:
+* There are certain java coding skills & good coding habits
+* Understand the read&write principles of EasyExcel
+* Has passion for open source projects
+* Be able to do things consistently for a long time
+* Your job is not so busy
+
+## Related Documents
+* [Quick Start](https://www.yuque.com/easyexcel/doc/easyexcel)
+* [About Us](/abouteasyexcel.md)
+* [Update Notes](/update.md)
+* [Code Contribution](https://www.yuque.com/easyexcel/doc/contribute)
+
+## Maintainers
+姬朋飞(玉霄)、庄家钜、怀宇
+## Quick Start
+### Read Excel File
+DEMO:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/demo/read/ReadTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java)
+
+```java
+ /**
+ * The easiest way to read Excel file using EasyExcel toolkit
+ *
+ *
+ * 1. Create an entity object, such as {@link DemoData}, each property of the entity object corresponds to a specific field in any row of Excel.
+ * 2. When reading each row of an Excel file, create a callback listener for the corresponding row. Refer to{@link DemoDataListener}
+ * 3. Invoke the read function
+ *
+ */
+ @Test
+ public void simpleRead() {
+ String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
+ // Specify which entity object class to use to read the Excel content. The file stream will close automatically after reading the first sheet of Excel.
+ EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
+ }
+```
+
+### Write Excel File
+DEMO:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java)
+```java
+ /**
+ * The easiest way to write Excel file using EasyExcel toolkit
+ *
+ *
+ * 1. Create an entity object, refer to{@link com.alibaba.easyexcel.test.demo.write.DemoData}.
+ * Each property of the entity object corresponds to a specific field of Excel
+ * 2. Invoke write function
+ *
+ */
+ @Test
+ public void simpleWrite() {
+ String fileName = TestFileUtil.getPath() + "write" + System.currentTimeMillis() + ".xlsx";
+ // Specify which entity object class to use to write Excel, it will write to the first sheet of Excel with the name template. Then the file stream will be closed automatically.
+ // With version 03, just pass in the excelType parameter
+ EasyExcel.write(fileName, DemoData.class).sheet("template").doWrite(data());
+ }
+```
+
+### File Uploading&Downloading
+DEMO:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java)
+```java
+ /**
+ * File downloading
+ *
+ * Note: returns an Excel with partial data if it fails
+ *
+ *
+ * 1. Create an entity object, refer to{@link DownloadData}.
+ * Each property of the entity object corresponds to a specific field of Excel
+ * 2. Specify the returned properties
+ * 3. Invoke wirte function, then the OutputStream is automatically closed when it ends.
+ *
+ */
+ @GetMapping("download")
+ public void download(HttpServletResponse response) throws IOException {
+ // Using swagger may cause some problems, please use your browser directly or use postman to invoke this
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("utf-8");
+ // URLEncoder.encode function can prevent Chinese garbled code
+ String fileName = URLEncoder.encode("test", "UTF-8").replaceAll("\\+", "%20");
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+ EasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("template").doWrite(data());
+ }
+
+ /**
+ * File uploading
+ *
+ *
+ * 1. Create an entity object, refer to{@link UploadData}
+ * Each property of the entity object corresponds to a specific field of Excel
+ * 2. When reading each row of an Excel file, create a callback listener for the corresponding row. Refer to{@link UploadDataListener}
+ * 3. Invoke read function
+ *
+ */
+ @PostMapping("upload")
+ @ResponseBody
+ public String upload(MultipartFile file) throws IOException {
+ EasyExcel.read(file.getInputStream(), UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead();
+ return "success";
+ }
+```
+### Contact Us
+If you have any questions, Alibaba colleagues can find me in DingTalk, and others can leave messages here. All related questions are well welcomed.
diff --git a/easyexcel-core/pom.xml b/easyexcel-core/pom.xml
new file mode 100644
index 00000000..4f03d716
--- /dev/null
+++ b/easyexcel-core/pom.xml
@@ -0,0 +1,43 @@
+
+
+ 4.0.0
+
+
+ com.alibaba
+ easyexcel-parent
+ ${revision}
+ ../pom.xml
+
+
+ jar
+ easyexcel-core
+
+
+
+ com.alibaba
+ easyexcel-support
+
+
+ org.apache.poi
+ poi
+
+
+ org.apache.poi
+ poi-ooxml
+
+
+ org.apache.poi
+ poi-ooxml-schemas
+
+
+ org.apache.commons
+ commons-csv
+
+
+ org.ehcache
+ ehcache
+
+
+
diff --git a/src/main/java/com/alibaba/excel/EasyExcel.java b/easyexcel-core/src/main/java/com/alibaba/excel/EasyExcel.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/EasyExcel.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/EasyExcel.java
diff --git a/src/main/java/com/alibaba/excel/EasyExcelFactory.java b/easyexcel-core/src/main/java/com/alibaba/excel/EasyExcelFactory.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/EasyExcelFactory.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/EasyExcelFactory.java
diff --git a/src/main/java/com/alibaba/excel/ExcelReader.java b/easyexcel-core/src/main/java/com/alibaba/excel/ExcelReader.java
similarity index 80%
rename from src/main/java/com/alibaba/excel/ExcelReader.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/ExcelReader.java
index a1a9c50d..9508d941 100644
--- a/src/main/java/com/alibaba/excel/ExcelReader.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/ExcelReader.java
@@ -1,5 +1,6 @@
package com.alibaba.excel;
+import java.io.Closeable;
import java.util.Arrays;
import java.util.List;
@@ -10,21 +11,17 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.read.metadata.ReadWorkbook;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
/**
* Excel readers are all read in event mode.
*
* @author jipengfei
*/
-public class ExcelReader {
- private static final Logger LOGGER = LoggerFactory.getLogger(ExcelReader.class);
+public class ExcelReader implements Closeable {
/**
* Analyser
*/
- private ExcelAnalyser excelAnalyser;
+ private final ExcelAnalyser excelAnalyser;
public ExcelReader(ReadWorkbook readWorkbook) {
excelAnalyser = new ExcelAnalyserImpl(readWorkbook);
@@ -50,8 +47,7 @@ public class ExcelReader {
/**
* Parse the specified sheet,SheetNo start from 0
*
- * @param readSheet
- * Read sheet
+ * @param readSheet Read sheet
*/
public ExcelReader read(ReadSheet... readSheet) {
return read(Arrays.asList(readSheet));
@@ -68,7 +64,6 @@ public class ExcelReader {
return this;
}
-
/**
* Context for the entire execution process
*
@@ -88,7 +83,6 @@ public class ExcelReader {
}
/**
- *
* @return
* @deprecated please use {@link #analysisContext()}
*/
@@ -106,17 +100,8 @@ public class ExcelReader {
}
}
- /**
- * Prevents calls to {@link #finish} from freeing the cache
- *
- */
@Override
- protected void finalize() {
- try {
- finish();
- } catch (Throwable e) {
- LOGGER.warn("Destroy object failed", e);
- }
+ public void close() {
+ finish();
}
-
}
diff --git a/src/main/java/com/alibaba/excel/ExcelWriter.java b/easyexcel-core/src/main/java/com/alibaba/excel/ExcelWriter.java
similarity index 89%
rename from src/main/java/com/alibaba/excel/ExcelWriter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/ExcelWriter.java
index bfdf2f26..95d5446b 100644
--- a/src/main/java/com/alibaba/excel/ExcelWriter.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/ExcelWriter.java
@@ -1,5 +1,6 @@
package com.alibaba.excel;
+import java.io.Closeable;
import java.util.Collection;
import java.util.function.Supplier;
@@ -11,9 +12,6 @@ import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.WriteWorkbook;
import com.alibaba.excel.write.metadata.fill.FillConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
/**
* Excel Writer This tool is used to write value out to Excel via POI. This object can perform the following two
* functions.
@@ -25,10 +23,9 @@ import org.slf4j.LoggerFactory;
*
* @author jipengfei
*/
-public class ExcelWriter {
- private static final Logger LOGGER = LoggerFactory.getLogger(ExcelWriter.class);
+public class ExcelWriter implements Closeable {
- private ExcelBuilder excelBuilder;
+ private final ExcelBuilder excelBuilder;
/**
* Create new writer
@@ -144,18 +141,6 @@ public class ExcelWriter {
}
}
- /**
- * Prevents calls to {@link #finish} from freeing the cache
- */
- @Override
- protected void finalize() {
- try {
- finish();
- } catch (Throwable e) {
- LOGGER.warn("Destroy object failed", e);
- }
- }
-
/**
* The context of the entire writing process
*
@@ -164,4 +149,9 @@ public class ExcelWriter {
public WriteContext writeContext() {
return excelBuilder.writeContext();
}
+
+ @Override
+ public void close() {
+ finish();
+ }
}
diff --git a/src/main/java/com/alibaba/excel/analysis/ExcelAnalyser.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelAnalyser.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/ExcelAnalyser.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelAnalyser.java
diff --git a/src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
similarity index 94%
rename from src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
index 743daab9..05d4fa84 100644
--- a/src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
@@ -18,6 +18,7 @@ import com.alibaba.excel.exception.ExcelAnalysisStopException;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.read.metadata.ReadWorkbook;
import com.alibaba.excel.read.metadata.holder.ReadWorkbookHolder;
+import com.alibaba.excel.read.metadata.holder.csv.CsvReadWorkbookHolder;
import com.alibaba.excel.read.metadata.holder.xls.XlsReadWorkbookHolder;
import com.alibaba.excel.read.metadata.holder.xlsx.XlsxReadWorkbookHolder;
import com.alibaba.excel.support.ExcelTypeEnum;
@@ -171,6 +172,18 @@ public class ExcelAnalyserImpl implements ExcelAnalyser {
} catch (Throwable t) {
throwable = t;
}
+
+ // close csv.
+ // https://github.com/alibaba/easyexcel/issues/2309
+ try {
+ if ((readWorkbookHolder instanceof CsvReadWorkbookHolder)
+ && ((CsvReadWorkbookHolder)readWorkbookHolder).getCsvParser() != null) {
+ ((CsvReadWorkbookHolder)readWorkbookHolder).getCsvParser().close();
+ }
+ } catch (Throwable t) {
+ throwable = t;
+ }
+
try {
if (analysisContext.readWorkbookHolder().getAutoCloseStream()
&& readWorkbookHolder.getInputStream() != null) {
diff --git a/src/main/java/com/alibaba/excel/analysis/ExcelReadExecutor.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelReadExecutor.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/ExcelReadExecutor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/ExcelReadExecutor.java
diff --git a/src/main/java/com/alibaba/excel/analysis/csv/CsvExcelReadExecutor.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/csv/CsvExcelReadExecutor.java
similarity index 78%
rename from src/main/java/com/alibaba/excel/analysis/csv/CsvExcelReadExecutor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/csv/CsvExcelReadExecutor.java
index d411ef0d..a1b7625d 100644
--- a/src/main/java/com/alibaba/excel/analysis/csv/CsvExcelReadExecutor.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/csv/CsvExcelReadExecutor.java
@@ -1,8 +1,8 @@
package com.alibaba.excel.analysis.csv;
-import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -25,6 +25,7 @@ import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
/**
@@ -35,8 +36,8 @@ import org.apache.commons.csv.CSVRecord;
@Slf4j
public class CsvExcelReadExecutor implements ExcelReadExecutor {
- private List sheetList;
- private CsvReadContext csvReadContext;
+ private final List sheetList;
+ private final CsvReadContext csvReadContext;
public CsvExcelReadExecutor(CsvReadContext csvReadContext) {
this.csvReadContext = csvReadContext;
@@ -53,9 +54,10 @@ public class CsvExcelReadExecutor implements ExcelReadExecutor {
@Override
public void execute() {
- Iterable parseRecords;
+ CSVParser csvParser;
try {
- parseRecords = parseRecords();
+ csvParser = csvParser();
+ csvReadContext.csvReadWorkbookHolder().setCsvParser(csvParser);
} catch (IOException e) {
throw new ExcelAnalysisException(e);
}
@@ -68,7 +70,7 @@ public class CsvExcelReadExecutor implements ExcelReadExecutor {
int rowIndex = 0;
- for (CSVRecord record : parseRecords) {
+ for (CSVRecord record : csvParser) {
dealRecord(record, rowIndex++);
}
@@ -77,23 +79,27 @@ public class CsvExcelReadExecutor implements ExcelReadExecutor {
}
}
- private Iterable parseRecords() throws IOException {
+ private CSVParser csvParser() throws IOException {
CsvReadWorkbookHolder csvReadWorkbookHolder = csvReadContext.csvReadWorkbookHolder();
CSVFormat csvFormat = csvReadWorkbookHolder.getCsvFormat();
if (csvReadWorkbookHolder.getMandatoryUseInputStream()) {
- return csvFormat.parse(new InputStreamReader(csvReadWorkbookHolder.getInputStream()));
+ return csvFormat.parse(
+ new InputStreamReader(csvReadWorkbookHolder.getInputStream(), csvReadWorkbookHolder.getCharset()));
}
if (csvReadWorkbookHolder.getFile() != null) {
- return csvFormat.parse(new FileReader(csvReadWorkbookHolder.getFile()));
+ return csvFormat.parse(new InputStreamReader(Files.newInputStream(csvReadWorkbookHolder.getFile().toPath()),
+ csvReadWorkbookHolder.getCharset()));
}
- return csvFormat.parse(new InputStreamReader(csvReadWorkbookHolder.getInputStream()));
+ return csvFormat.parse(
+ new InputStreamReader(csvReadWorkbookHolder.getInputStream(), csvReadWorkbookHolder.getCharset()));
}
private void dealRecord(CSVRecord record, int rowIndex) {
Map cellMap = new LinkedHashMap<>();
Iterator cellIterator = record.iterator();
int columnIndex = 0;
+ Boolean autoTrim = csvReadContext.currentReadHolder().globalConfiguration().getAutoTrim();
while (cellIterator.hasNext()) {
String cellString = cellIterator.next();
ReadCellData readCellData = new ReadCellData<>();
@@ -103,7 +109,7 @@ public class CsvExcelReadExecutor implements ExcelReadExecutor {
// csv is an empty string of whether ,, is read or ,"",
if (StringUtils.isNotBlank(cellString)) {
readCellData.setType(CellDataTypeEnum.STRING);
- readCellData.setStringValue(cellString);
+ readCellData.setStringValue(autoTrim ? cellString.trim() : cellString);
} else {
readCellData.setType(CellDataTypeEnum.EMPTY);
}
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/IgnorableXlsRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/IgnorableXlsRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/IgnorableXlsRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/IgnorableXlsRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/XlsListSheetListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsListSheetListener.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/analysis/v03/XlsListSheetListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsListSheetListener.java
index cfdc6bee..14565e5e 100644
--- a/src/main/java/com/alibaba/excel/analysis/v03/XlsListSheetListener.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsListSheetListener.java
@@ -25,7 +25,7 @@ import com.alibaba.excel.exception.ExcelAnalysisException;
* @author Jiaju Zhuang
*/
public class XlsListSheetListener implements HSSFListener {
- private XlsReadContext xlsReadContext;
+ private final XlsReadContext xlsReadContext;
private static final Map XLS_RECORD_HANDLER_MAP = new HashMap();
static {
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/XlsRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/XlsRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
index 83f98647..e1a303b1 100644
--- a/src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
@@ -11,7 +11,6 @@ import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;
import org.apache.poi.hssf.eventusermodel.HSSFListener;
import org.apache.poi.hssf.eventusermodel.HSSFRequest;
import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener;
-import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
import org.apache.poi.hssf.record.BOFRecord;
import org.apache.poi.hssf.record.BlankRecord;
import org.apache.poi.hssf.record.BoolErrRecord;
@@ -78,7 +77,7 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelReadExecutor {
private static final Logger LOGGER = LoggerFactory.getLogger(XlsSaxAnalyser.class);
private static final short DUMMY_RECORD_SID = -1;
- private XlsReadContext xlsReadContext;
+ private final XlsReadContext xlsReadContext;
private static final Map XLS_RECORD_HANDLER_MAP = new HashMap(32);
static {
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/AbstractXlsRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/AbstractXlsRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/AbstractXlsRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/AbstractXlsRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/BlankRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BlankRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/BlankRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BlankRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/BofRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BofRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/BofRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BofRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/BoolErrRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BoolErrRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/BoolErrRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BoolErrRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/BoundSheetRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BoundSheetRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/BoundSheetRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/BoundSheetRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/DummyRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/DummyRecordHandler.java
similarity index 85%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/DummyRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/DummyRecordHandler.java
index 8ecc33a4..b5c853c5 100644
--- a/src/main/java/com/alibaba/excel/analysis/v03/handlers/DummyRecordHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/DummyRecordHandler.java
@@ -34,7 +34,10 @@ public class DummyRecordHandler extends AbstractXlsRecordHandler implements Igno
xlsReadSheetHolder.setTempRowType(RowTypeEnum.EMPTY);
} else if (record instanceof MissingCellDummyRecord) {
MissingCellDummyRecord mcdr = (MissingCellDummyRecord)record;
- xlsReadSheetHolder.getCellMap().put(mcdr.getColumn(),
+ // https://github.com/alibaba/easyexcel/issues/2236
+ // Some abnormal XLS, in the case of data already exist, or there will be a "MissingCellDummyRecord"
+ // records, so if the existing data, empty data is ignored
+ xlsReadSheetHolder.getCellMap().putIfAbsent(mcdr.getColumn(),
ReadCellData.newEmptyInstance(mcdr.getRow(), mcdr.getColumn()));
}
}
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/EofRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/EofRecordHandler.java
similarity index 95%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/EofRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/EofRecordHandler.java
index 32b5b882..448dcb49 100644
--- a/src/main/java/com/alibaba/excel/analysis/v03/handlers/EofRecordHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/EofRecordHandler.java
@@ -2,7 +2,6 @@ package com.alibaba.excel.analysis.v03.handlers;
import java.util.LinkedHashMap;
-import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
import org.apache.poi.hssf.record.Record;
import com.alibaba.excel.analysis.v03.IgnorableXlsRecordHandler;
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/FormulaRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/FormulaRecordHandler.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/FormulaRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/FormulaRecordHandler.java
index f5d7ff0a..09188cb2 100644
--- a/src/main/java/com/alibaba/excel/analysis/v03/handlers/FormulaRecordHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/FormulaRecordHandler.java
@@ -64,6 +64,7 @@ public class FormulaRecordHandler extends AbstractXlsRecordHandler implements Ig
dataFormatData.setFormat(BuiltinFormats.getBuiltinFormat(dataFormatData.getIndex(),
xlsReadContext.xlsReadWorkbookHolder().getFormatTrackingHSSFListener().getFormatString(frec),
xlsReadContext.readSheetHolder().getGlobalConfiguration().getLocale()));
+ tempCellData.setDataFormatData(dataFormatData);
cellMap.put((int)frec.getColumn(), tempCellData);
break;
case ERROR:
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/HyperlinkRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/HyperlinkRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/HyperlinkRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/HyperlinkRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/IndexRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/IndexRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/IndexRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/IndexRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelSstRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelSstRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelSstRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/LabelSstRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/MergeCellsRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/MergeCellsRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/MergeCellsRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/MergeCellsRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/NoteRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/NoteRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/NoteRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/NoteRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/NumberRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/NumberRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/NumberRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/NumberRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/ObjRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/ObjRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/ObjRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/ObjRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/RkRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/RkRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/RkRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/RkRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/SstRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/SstRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/SstRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/SstRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/StringRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/StringRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/StringRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/StringRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v03/handlers/TextObjectRecordHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/TextObjectRecordHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v03/handlers/TextObjectRecordHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v03/handlers/TextObjectRecordHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
similarity index 93%
rename from src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
index ea8b87b1..38918fb8 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
@@ -52,13 +52,13 @@ import org.xml.sax.XMLReader;
@Slf4j
public class XlsxSaxAnalyser implements ExcelReadExecutor {
- private XlsxReadContext xlsxReadContext;
- private List sheetList;
- private Map sheetMap;
+ private final XlsxReadContext xlsxReadContext;
+ private final List sheetList;
+ private final Map sheetMap;
/**
* excel comments key: sheetNo value: CommentsTable
*/
- private Map commentsTableMap;
+ private final Map commentsTableMap;
public XlsxSaxAnalyser(XlsxReadContext xlsxReadContext, InputStream decryptedStream) throws Exception {
this.xlsxReadContext = xlsxReadContext;
@@ -188,9 +188,15 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor {
} else {
saxFactory = SAXParserFactory.newInstance(xlsxSAXParserFactoryName, null);
}
- saxFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
- saxFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
- saxFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+ try {
+ saxFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+ } catch (Throwable ignore) {}
+ try {
+ saxFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
+ } catch (Throwable ignore) {}
+ try {
+ saxFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+ } catch (Throwable ignore) {}
SAXParser saxParser = saxFactory.newSAXParser();
XMLReader xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(handler);
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractXlsxTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractXlsxTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractXlsxTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractXlsxTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellFormulaTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellFormulaTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/CellFormulaTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellFormulaTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellInlineStringValueTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellInlineStringValueTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/CellInlineStringValueTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellInlineStringValueTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellTagHandler.java
similarity index 96%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/CellTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellTagHandler.java
index 9d8e4736..ce84d5e2 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellTagHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellTagHandler.java
@@ -100,6 +100,8 @@ public class CellTagHandler extends AbstractXlsxTagHandler {
}
tempCellData.checkEmpty();
+ tempCellData.setRowIndex(xlsxReadSheetHolder.getRowIndex());
+ tempCellData.setColumnIndex(xlsxReadSheetHolder.getColumnIndex());
xlsxReadSheetHolder.getCellMap().put(xlsxReadSheetHolder.getColumnIndex(), tempCellData);
}
}
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CountTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CountTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/CountTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/CountTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/HyperlinkTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/HyperlinkTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/HyperlinkTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/HyperlinkTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/MergeCellTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/MergeCellTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/MergeCellTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/MergeCellTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/RowTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/RowTagHandler.java
similarity index 74%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/RowTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/RowTagHandler.java
index 37965254..51c192ca 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/handlers/RowTagHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/RowTagHandler.java
@@ -4,8 +4,10 @@ import java.util.LinkedHashMap;
import com.alibaba.excel.constant.ExcelXmlConstants;
import com.alibaba.excel.context.xlsx.XlsxReadContext;
+import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.enums.RowTypeEnum;
import com.alibaba.excel.metadata.Cell;
+import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.read.metadata.holder.xlsx.XlsxReadSheetHolder;
import com.alibaba.excel.util.PositionUtils;
@@ -41,6 +43,24 @@ public class RowTagHandler extends AbstractXlsxTagHandler {
public void endElement(XlsxReadContext xlsxReadContext, String name) {
XlsxReadSheetHolder xlsxReadSheetHolder = xlsxReadContext.xlsxReadSheetHolder();
RowTypeEnum rowType = MapUtils.isEmpty(xlsxReadSheetHolder.getCellMap()) ? RowTypeEnum.EMPTY : RowTypeEnum.DATA;
+ // It's possible that all of the cells in the row are empty
+ if (rowType == RowTypeEnum.DATA) {
+ boolean hasData = false;
+ for (Cell cell : xlsxReadSheetHolder.getCellMap().values()) {
+ if (!(cell instanceof ReadCellData)) {
+ hasData = true;
+ break;
+ }
+ ReadCellData> readCellData = (ReadCellData>)cell;
+ if (readCellData.getType() != CellDataTypeEnum.EMPTY) {
+ hasData = true;
+ break;
+ }
+ }
+ if (!hasData) {
+ rowType = RowTypeEnum.EMPTY;
+ }
+ }
xlsxReadContext.readRowHolder(new ReadRowHolder(xlsxReadSheetHolder.getRowIndex(), rowType,
xlsxReadSheetHolder.getGlobalConfiguration(), xlsxReadSheetHolder.getCellMap()));
xlsxReadContext.analysisEventProcessor().endRow(xlsxReadContext);
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/XlsxTagHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/XlsxTagHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/XlsxTagHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/XlsxTagHandler.java
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/SharedStringsTableHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/SharedStringsTableHandler.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/SharedStringsTableHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/SharedStringsTableHandler.java
index ea6ffc58..f4514e43 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/SharedStringsTableHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/SharedStringsTableHandler.java
@@ -27,7 +27,7 @@ public class SharedStringsTableHandler extends DefaultHandler {
*/
private StringBuilder currentElementData;
- private ReadCache readCache;
+ private final ReadCache readCache;
/**
* Some fields in the T tag need to be ignored
*/
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java
index 869ef3cb..61805cd5 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java
@@ -25,7 +25,7 @@ import org.xml.sax.helpers.DefaultHandler;
*/
@Slf4j
public class XlsxRowHandler extends DefaultHandler {
- private XlsxReadContext xlsxReadContext;
+ private final XlsxReadContext xlsxReadContext;
private static final Map XLSX_CELL_HANDLER_MAP = new HashMap(32);
static {
diff --git a/src/main/java/com/alibaba/excel/annotation/ExcelIgnore.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/ExcelIgnore.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/ExcelIgnore.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/ExcelIgnore.java
diff --git a/src/main/java/com/alibaba/excel/annotation/ExcelIgnoreUnannotated.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/ExcelIgnoreUnannotated.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/ExcelIgnoreUnannotated.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/ExcelIgnoreUnannotated.java
diff --git a/src/main/java/com/alibaba/excel/annotation/ExcelProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/ExcelProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/ExcelProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/ExcelProperty.java
diff --git a/src/main/java/com/alibaba/excel/annotation/format/DateTimeFormat.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/format/DateTimeFormat.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/format/DateTimeFormat.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/format/DateTimeFormat.java
diff --git a/src/main/java/com/alibaba/excel/annotation/format/NumberFormat.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/format/NumberFormat.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/format/NumberFormat.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/format/NumberFormat.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/ColumnWidth.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ColumnWidth.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/ColumnWidth.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ColumnWidth.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/ContentFontStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentFontStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/ContentFontStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentFontStyle.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/ContentLoopMerge.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentLoopMerge.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/ContentLoopMerge.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentLoopMerge.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/ContentRowHeight.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentRowHeight.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/ContentRowHeight.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentRowHeight.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/ContentStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/ContentStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/ContentStyle.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/HeadFontStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/HeadFontStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/HeadFontStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/HeadFontStyle.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/HeadRowHeight.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/HeadRowHeight.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/HeadRowHeight.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/HeadRowHeight.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/HeadStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/HeadStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/HeadStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/HeadStyle.java
diff --git a/src/main/java/com/alibaba/excel/annotation/write/style/OnceAbsoluteMerge.java b/easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/OnceAbsoluteMerge.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/annotation/write/style/OnceAbsoluteMerge.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/annotation/write/style/OnceAbsoluteMerge.java
diff --git a/src/main/java/com/alibaba/excel/cache/Ehcache.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/Ehcache.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/cache/Ehcache.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/Ehcache.java
diff --git a/src/main/java/com/alibaba/excel/cache/MapCache.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/MapCache.java
similarity index 92%
rename from src/main/java/com/alibaba/excel/cache/MapCache.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/MapCache.java
index f83a1233..82ada960 100644
--- a/src/main/java/com/alibaba/excel/cache/MapCache.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/cache/MapCache.java
@@ -11,7 +11,7 @@ import com.alibaba.excel.context.AnalysisContext;
* @author Jiaju Zhuang
*/
public class MapCache implements ReadCache {
- private List cache = new ArrayList<>();
+ private final List cache = new ArrayList<>();
@Override
public void init(AnalysisContext analysisContext) {}
diff --git a/src/main/java/com/alibaba/excel/cache/ReadCache.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/ReadCache.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/cache/ReadCache.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/ReadCache.java
diff --git a/src/main/java/com/alibaba/excel/cache/XlsCache.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/XlsCache.java
similarity index 94%
rename from src/main/java/com/alibaba/excel/cache/XlsCache.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/XlsCache.java
index 9e814e0f..261bc187 100644
--- a/src/main/java/com/alibaba/excel/cache/XlsCache.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/cache/XlsCache.java
@@ -11,7 +11,7 @@ import com.alibaba.excel.context.AnalysisContext;
* @author Jiaju Zhuang
*/
public class XlsCache implements ReadCache {
- private SSTRecord sstRecord;
+ private final SSTRecord sstRecord;
public XlsCache(SSTRecord sstRecord) {
this.sstRecord = sstRecord;
diff --git a/src/main/java/com/alibaba/excel/cache/selector/EternalReadCacheSelector.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/EternalReadCacheSelector.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/cache/selector/EternalReadCacheSelector.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/EternalReadCacheSelector.java
diff --git a/src/main/java/com/alibaba/excel/cache/selector/ReadCacheSelector.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/ReadCacheSelector.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/cache/selector/ReadCacheSelector.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/ReadCacheSelector.java
diff --git a/src/main/java/com/alibaba/excel/cache/selector/SimpleReadCacheSelector.java b/easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/SimpleReadCacheSelector.java
similarity index 96%
rename from src/main/java/com/alibaba/excel/cache/selector/SimpleReadCacheSelector.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/SimpleReadCacheSelector.java
index d7cedd07..658806bd 100644
--- a/src/main/java/com/alibaba/excel/cache/selector/SimpleReadCacheSelector.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/cache/selector/SimpleReadCacheSelector.java
@@ -33,12 +33,12 @@ public class SimpleReadCacheSelector implements ReadCacheSelector {
/**
* Shared strings exceeding this value will use {@link Ehcache},or use {@link MapCache}.unit MB.
*/
- private long maxUseMapCacheSize;
+ private final long maxUseMapCacheSize;
/**
* Maximum size of cache activation.unit MB.
*/
- private int maxCacheActivateSize;
+ private final int maxCacheActivateSize;
public SimpleReadCacheSelector() {
this(DEFAULT_MAX_USE_MAP_CACHE_SIZE, DEFAULT_MAX_EHCACHE_ACTIVATE_SIZE);
diff --git a/src/main/java/com/alibaba/excel/constant/BuiltinFormats.java b/easyexcel-core/src/main/java/com/alibaba/excel/constant/BuiltinFormats.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/constant/BuiltinFormats.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/constant/BuiltinFormats.java
diff --git a/src/main/java/com/alibaba/excel/constant/ExcelXmlConstants.java b/easyexcel-core/src/main/java/com/alibaba/excel/constant/ExcelXmlConstants.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/constant/ExcelXmlConstants.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/constant/ExcelXmlConstants.java
diff --git a/src/main/java/com/alibaba/excel/constant/OrderConstant.java b/easyexcel-core/src/main/java/com/alibaba/excel/constant/OrderConstant.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/constant/OrderConstant.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/constant/OrderConstant.java
diff --git a/src/main/java/com/alibaba/excel/context/AnalysisContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/AnalysisContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/AnalysisContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/AnalysisContext.java
diff --git a/src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
index 4edaef37..5385831b 100644
--- a/src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
@@ -46,7 +46,7 @@ public class AnalysisContextImpl implements AnalysisContext {
/**
* Event processor
*/
- private AnalysisEventProcessor analysisEventProcessor;
+ private final AnalysisEventProcessor analysisEventProcessor;
public AnalysisContextImpl(ReadWorkbook readWorkbook, ExcelTypeEnum actualExcelType) {
if (readWorkbook == null) {
diff --git a/src/main/java/com/alibaba/excel/context/WriteContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/WriteContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/WriteContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/WriteContext.java
diff --git a/src/main/java/com/alibaba/excel/context/WriteContextImpl.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/WriteContextImpl.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/WriteContextImpl.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/WriteContextImpl.java
diff --git a/src/main/java/com/alibaba/excel/context/csv/CsvReadContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/csv/CsvReadContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/csv/CsvReadContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/csv/CsvReadContext.java
diff --git a/src/main/java/com/alibaba/excel/context/csv/DefaultCsvReadContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/csv/DefaultCsvReadContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/csv/DefaultCsvReadContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/csv/DefaultCsvReadContext.java
diff --git a/src/main/java/com/alibaba/excel/context/xls/DefaultXlsReadContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/xls/DefaultXlsReadContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/xls/DefaultXlsReadContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/xls/DefaultXlsReadContext.java
diff --git a/src/main/java/com/alibaba/excel/context/xls/XlsReadContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/xls/XlsReadContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/xls/XlsReadContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/xls/XlsReadContext.java
diff --git a/src/main/java/com/alibaba/excel/context/xlsx/DefaultXlsxReadContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/xlsx/DefaultXlsxReadContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/xlsx/DefaultXlsxReadContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/xlsx/DefaultXlsxReadContext.java
diff --git a/src/main/java/com/alibaba/excel/context/xlsx/XlsxReadContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/context/xlsx/XlsxReadContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/context/xlsx/XlsxReadContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/context/xlsx/XlsxReadContext.java
diff --git a/src/main/java/com/alibaba/excel/converters/AutoConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/AutoConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/AutoConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/AutoConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/Converter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/Converter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/Converter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/Converter.java
diff --git a/src/main/java/com/alibaba/excel/converters/ConverterKeyBuild.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/ConverterKeyBuild.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/ConverterKeyBuild.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/ConverterKeyBuild.java
diff --git a/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java
diff --git a/src/main/java/com/alibaba/excel/converters/NullableObjectConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/NullableObjectConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/NullableObjectConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/NullableObjectConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/ReadConverterContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/ReadConverterContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/ReadConverterContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/ReadConverterContext.java
diff --git a/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/WriteConverterContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java
diff --git a/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/bigdecimal/BigDecimalStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java
similarity index 94%
rename from src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java
index 4894ac16..aa553108 100644
--- a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java
@@ -37,6 +37,6 @@ public class BigIntegerStringConverter implements Converter {
@Override
public WriteCellData> convertToExcelData(BigInteger value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
- return NumberUtils.formatToCellData(value, contentProperty);
+ return NumberUtils.formatToCellDataString(value, contentProperty);
}
}
diff --git a/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/booleanconverter/BooleanStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/bytearray/BoxingByteArrayImageConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/bytearray/BoxingByteArrayImageConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/bytearray/BoxingByteArrayImageConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/bytearray/BoxingByteArrayImageConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/bytearray/ByteArrayImageConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/bytearray/ByteArrayImageConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/bytearray/ByteArrayImageConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/bytearray/ByteArrayImageConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/byteconverter/ByteBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/byteconverter/ByteBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/byteconverter/ByteBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/byteconverter/ByteBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/byteconverter/ByteNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/byteconverter/ByteNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/byteconverter/ByteNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/byteconverter/ByteNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/byteconverter/ByteStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/byteconverter/ByteStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/byteconverter/ByteStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/byteconverter/ByteStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/date/DateDateConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/date/DateDateConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/date/DateDateConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/date/DateDateConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/date/DateNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/date/DateNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/date/DateNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/date/DateNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/date/DateStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/date/DateStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/date/DateStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/date/DateStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/doubleconverter/DoubleStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/file/FileImageConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/file/FileImageConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/file/FileImageConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/file/FileImageConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/floatconverter/FloatBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/floatconverter/FloatBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/floatconverter/FloatBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/floatconverter/FloatBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/floatconverter/FloatNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/floatconverter/FloatNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/floatconverter/FloatNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/floatconverter/FloatNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/floatconverter/FloatStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/floatconverter/FloatStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/floatconverter/FloatStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/floatconverter/FloatStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/inputstream/InputStreamImageConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/inputstream/InputStreamImageConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/inputstream/InputStreamImageConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/inputstream/InputStreamImageConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/integer/IntegerBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/integer/IntegerBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/integer/IntegerBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/integer/IntegerBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/integer/IntegerNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/integer/IntegerNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/integer/IntegerNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/integer/IntegerNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/integer/IntegerStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/integer/IntegerStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/integer/IntegerStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/integer/IntegerStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeDateConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeDateConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeDateConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeDateConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/localdatetime/LocalDateTimeStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/longconverter/LongBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/longconverter/LongBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/longconverter/LongBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/longconverter/LongBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/longconverter/LongNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/longconverter/LongNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/longconverter/LongNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/longconverter/LongNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/longconverter/LongStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/longconverter/LongStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/longconverter/LongStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/longconverter/LongStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/shortconverter/ShortBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/shortconverter/ShortBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/shortconverter/ShortBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/shortconverter/ShortBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/shortconverter/ShortNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/shortconverter/ShortNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/shortconverter/ShortNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/shortconverter/ShortNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/shortconverter/ShortStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/shortconverter/ShortStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/shortconverter/ShortStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/shortconverter/ShortStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/string/StringBooleanConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringBooleanConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/string/StringBooleanConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringBooleanConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/string/StringErrorConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringErrorConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/string/StringErrorConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringErrorConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/string/StringImageConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringImageConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/string/StringImageConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringImageConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/string/StringStringConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringStringConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/string/StringStringConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/string/StringStringConverter.java
diff --git a/src/main/java/com/alibaba/excel/converters/url/UrlImageConverter.java b/easyexcel-core/src/main/java/com/alibaba/excel/converters/url/UrlImageConverter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/converters/url/UrlImageConverter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/converters/url/UrlImageConverter.java
diff --git a/src/main/java/com/alibaba/excel/enums/BooleanEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/BooleanEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/BooleanEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/BooleanEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/CellExtraTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellExtraTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/CellExtraTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/CellExtraTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/HeadKindEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/HeadKindEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/HeadKindEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/HeadKindEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/HolderEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/HolderEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/HolderEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/HolderEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/NumericCellTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/NumericCellTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/NumericCellTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/NumericCellTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/RowTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/RowTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/RowTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/RowTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/WriteDirectionEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteDirectionEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/WriteDirectionEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteDirectionEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/WriteLastRowTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteLastRowTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/WriteLastRowTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteLastRowTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/WriteTemplateAnalysisCellTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteTemplateAnalysisCellTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/WriteTemplateAnalysisCellTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteTemplateAnalysisCellTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/WriteTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/WriteTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/WriteTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/poi/BorderStyleEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/BorderStyleEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/poi/BorderStyleEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/BorderStyleEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/poi/FillPatternTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/FillPatternTypeEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/poi/FillPatternTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/FillPatternTypeEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/poi/HorizontalAlignmentEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/HorizontalAlignmentEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/poi/HorizontalAlignmentEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/HorizontalAlignmentEnum.java
diff --git a/src/main/java/com/alibaba/excel/enums/poi/VerticalAlignmentEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/VerticalAlignmentEnum.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/enums/poi/VerticalAlignmentEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/enums/poi/VerticalAlignmentEnum.java
diff --git a/src/main/java/com/alibaba/excel/event/AbstractIgnoreExceptionReadListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/AbstractIgnoreExceptionReadListener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/AbstractIgnoreExceptionReadListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/AbstractIgnoreExceptionReadListener.java
diff --git a/src/main/java/com/alibaba/excel/event/AnalysisEventListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/AnalysisEventListener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/AnalysisEventListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/AnalysisEventListener.java
diff --git a/src/main/java/com/alibaba/excel/event/Handler.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/Handler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/Handler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/Handler.java
diff --git a/src/main/java/com/alibaba/excel/event/Listener.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/Listener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/Listener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/Listener.java
diff --git a/src/main/java/com/alibaba/excel/event/NotRepeatExecutor.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/NotRepeatExecutor.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/NotRepeatExecutor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/NotRepeatExecutor.java
diff --git a/src/main/java/com/alibaba/excel/event/Order.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/Order.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/Order.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/Order.java
diff --git a/src/main/java/com/alibaba/excel/event/SyncReadListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/event/SyncReadListener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/event/SyncReadListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/event/SyncReadListener.java
diff --git a/src/main/java/com/alibaba/excel/exception/ExcelAnalysisException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelAnalysisException.java
similarity index 84%
rename from src/main/java/com/alibaba/excel/exception/ExcelAnalysisException.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelAnalysisException.java
index 490c541e..28a60901 100644
--- a/src/main/java/com/alibaba/excel/exception/ExcelAnalysisException.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelAnalysisException.java
@@ -4,7 +4,7 @@ package com.alibaba.excel.exception;
*
* @author jipengfei
*/
-public class ExcelAnalysisException extends RuntimeException {
+public class ExcelAnalysisException extends ExcelRuntimeException {
public ExcelAnalysisException() {}
diff --git a/src/main/java/com/alibaba/excel/exception/ExcelAnalysisStopException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelAnalysisStopException.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/exception/ExcelAnalysisStopException.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelAnalysisStopException.java
diff --git a/src/main/java/com/alibaba/excel/exception/ExcelCommonException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelCommonException.java
similarity index 85%
rename from src/main/java/com/alibaba/excel/exception/ExcelCommonException.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelCommonException.java
index d8612147..4370159b 100644
--- a/src/main/java/com/alibaba/excel/exception/ExcelCommonException.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelCommonException.java
@@ -4,7 +4,7 @@ package com.alibaba.excel.exception;
*
* @author Jiaju Zhuang
*/
-public class ExcelCommonException extends RuntimeException {
+public class ExcelCommonException extends ExcelRuntimeException {
public ExcelCommonException() {}
diff --git a/src/main/java/com/alibaba/excel/exception/ExcelDataConvertException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelDataConvertException.java
similarity index 95%
rename from src/main/java/com/alibaba/excel/exception/ExcelDataConvertException.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelDataConvertException.java
index ff1b409d..f351287a 100644
--- a/src/main/java/com/alibaba/excel/exception/ExcelDataConvertException.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelDataConvertException.java
@@ -16,7 +16,7 @@ import lombok.Setter;
@Getter
@Setter
@EqualsAndHashCode
-public class ExcelDataConvertException extends RuntimeException {
+public class ExcelDataConvertException extends ExcelRuntimeException {
/**
* NotNull.
*/
diff --git a/src/main/java/com/alibaba/excel/exception/ExcelGenerateException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelGenerateException.java
similarity index 83%
rename from src/main/java/com/alibaba/excel/exception/ExcelGenerateException.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelGenerateException.java
index f508b17f..95ac9083 100644
--- a/src/main/java/com/alibaba/excel/exception/ExcelGenerateException.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelGenerateException.java
@@ -3,7 +3,7 @@ package com.alibaba.excel.exception;
/**
* @author jipengfei
*/
-public class ExcelGenerateException extends RuntimeException {
+public class ExcelGenerateException extends ExcelRuntimeException {
public ExcelGenerateException(String message) {
super(message);
diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelRuntimeException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelRuntimeException.java
new file mode 100644
index 00000000..5d053201
--- /dev/null
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelRuntimeException.java
@@ -0,0 +1,21 @@
+package com.alibaba.excel.exception;
+
+/**
+ * Excel Exception
+ * @author Jiaju Zhuang
+ */
+public class ExcelRuntimeException extends RuntimeException {
+ public ExcelRuntimeException() {}
+
+ public ExcelRuntimeException(String message) {
+ super(message);
+ }
+
+ public ExcelRuntimeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ExcelRuntimeException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/src/main/java/com/alibaba/excel/exception/ExcelWriteDataConvertException.java b/easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelWriteDataConvertException.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/exception/ExcelWriteDataConvertException.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/exception/ExcelWriteDataConvertException.java
diff --git a/src/main/java/com/alibaba/excel/metadata/AbstractCell.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/AbstractCell.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/AbstractCell.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/AbstractCell.java
diff --git a/src/main/java/com/alibaba/excel/metadata/AbstractHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/AbstractHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/AbstractHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/AbstractHolder.java
diff --git a/src/main/java/com/alibaba/excel/metadata/AbstractParameterBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/AbstractParameterBuilder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/AbstractParameterBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/AbstractParameterBuilder.java
diff --git a/src/main/java/com/alibaba/excel/metadata/BasicParameter.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/BasicParameter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/BasicParameter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/BasicParameter.java
diff --git a/src/main/java/com/alibaba/excel/metadata/Cell.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/Cell.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/Cell.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/Cell.java
diff --git a/src/main/java/com/alibaba/excel/metadata/CellExtra.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/CellExtra.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/CellExtra.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/CellExtra.java
diff --git a/src/main/java/com/alibaba/excel/metadata/CellRange.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/CellRange.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/CellRange.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/CellRange.java
diff --git a/src/main/java/com/alibaba/excel/metadata/ConfigurationHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/ConfigurationHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/ConfigurationHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/ConfigurationHolder.java
diff --git a/src/main/java/com/alibaba/excel/metadata/Font.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/Font.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/Font.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/Font.java
diff --git a/src/main/java/com/alibaba/excel/metadata/GlobalConfiguration.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/GlobalConfiguration.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/GlobalConfiguration.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/GlobalConfiguration.java
diff --git a/src/main/java/com/alibaba/excel/metadata/Head.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/Head.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/Head.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/Head.java
diff --git a/src/main/java/com/alibaba/excel/metadata/Holder.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/Holder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/Holder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/Holder.java
diff --git a/src/main/java/com/alibaba/excel/metadata/NullObject.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/NullObject.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/NullObject.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/NullObject.java
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvCell.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvCell.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvCell.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvCell.java
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvCellStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvCellStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvCellStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvCellStyle.java
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvDataFormat.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvDataFormat.java
similarity index 91%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvDataFormat.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvDataFormat.java
index 42d3f043..9efc7321 100644
--- a/src/main/java/com/alibaba/excel/metadata/csv/CsvDataFormat.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvDataFormat.java
@@ -45,10 +45,11 @@ public class CsvDataFormat implements DataFormat {
if (index != null) {
return index;
}
- index = (short)(formatList.size() + BuiltinFormats.MIN_CUSTOM_DATA_FORMAT_INDEX);
+ short indexPrimitive = (short)(formatList.size() + BuiltinFormats.MIN_CUSTOM_DATA_FORMAT_INDEX);
+ index = indexPrimitive;
formatList.add(format);
formatMap.put(format, index);
- return index;
+ return indexPrimitive;
}
@Override
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvRichTextString.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvRichTextString.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvRichTextString.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvRichTextString.java
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvRow.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvRow.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvRow.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvRow.java
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvSheet.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvSheet.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvSheet.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvSheet.java
diff --git a/src/main/java/com/alibaba/excel/metadata/csv/CsvWorkbook.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvWorkbook.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/csv/CsvWorkbook.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/csv/CsvWorkbook.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/CellData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/CellData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/CellData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/CellData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/ClientAnchorData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/ClientAnchorData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/ClientAnchorData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/ClientAnchorData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/CommentData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/CommentData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/CommentData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/CommentData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/CoordinateData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/CoordinateData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/CoordinateData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/CoordinateData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/DataFormatData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/DataFormatData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/DataFormatData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/DataFormatData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/FormulaData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/FormulaData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/FormulaData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/FormulaData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/HyperlinkData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/HyperlinkData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/HyperlinkData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/HyperlinkData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/ImageData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/ImageData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/ImageData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/ImageData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/ReadCellData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/ReadCellData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/ReadCellData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/ReadCellData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/RichTextStringData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/RichTextStringData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/RichTextStringData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/RichTextStringData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/data/WriteCellData.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/WriteCellData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/data/WriteCellData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/data/WriteCellData.java
diff --git a/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java
diff --git a/src/main/java/com/alibaba/excel/metadata/format/ExcelGeneralNumberFormat.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/format/ExcelGeneralNumberFormat.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/format/ExcelGeneralNumberFormat.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/format/ExcelGeneralNumberFormat.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/ColumnWidthProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ColumnWidthProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/ColumnWidthProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ColumnWidthProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/DateTimeFormatProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/DateTimeFormatProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/DateTimeFormatProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/DateTimeFormatProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/ExcelContentProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ExcelContentProperty.java
similarity index 97%
rename from src/main/java/com/alibaba/excel/metadata/property/ExcelContentProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ExcelContentProperty.java
index f0b72198..0b3ad1a5 100644
--- a/src/main/java/com/alibaba/excel/metadata/property/ExcelContentProperty.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ExcelContentProperty.java
@@ -18,7 +18,7 @@ public class ExcelContentProperty {
public static final ExcelContentProperty EMPTY = new ExcelContentProperty();
/**
- * Java filed
+ * Java field
*/
private Field field;
/**
diff --git a/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java
similarity index 93%
rename from src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java
index f3a8474a..61240d31 100644
--- a/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java
@@ -109,8 +109,8 @@ public class ExcelHeadProperty {
return;
}
// Declared fields
- Map sortedAllFiledMap = MapUtils.newTreeMap();
- Map indexFiledMap = MapUtils.newTreeMap();
+ Map sortedAllFieldMap = MapUtils.newTreeMap();
+ Map indexFieldMap = MapUtils.newTreeMap();
boolean needIgnore = (holder instanceof AbstractWriteHolder) && (
!CollectionUtils.isEmpty(((AbstractWriteHolder)holder).getExcludeColumnFieldNames()) || !CollectionUtils
@@ -118,10 +118,10 @@ public class ExcelHeadProperty {
.isEmpty(((AbstractWriteHolder)holder).getIncludeColumnFieldNames()) || !CollectionUtils
.isEmpty(((AbstractWriteHolder)holder).getIncludeColumnIndexes()));
- ClassUtils.declaredFields(headClazz, sortedAllFiledMap, indexFiledMap, ignoreMap, needIgnore, holder);
+ ClassUtils.declaredFields(headClazz, sortedAllFieldMap, indexFieldMap, ignoreMap, needIgnore, holder);
- for (Map.Entry entry : sortedAllFiledMap.entrySet()) {
- initOneColumnProperty(entry.getKey(), entry.getValue(), indexFiledMap.containsKey(entry.getKey()));
+ for (Map.Entry entry : sortedAllFieldMap.entrySet()) {
+ initOneColumnProperty(entry.getKey(), entry.getValue(), indexFieldMap.containsKey(entry.getKey()));
}
headKind = HeadKindEnum.CLASS;
}
diff --git a/src/main/java/com/alibaba/excel/metadata/property/FontProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/FontProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/FontProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/FontProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/LoopMergeProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/LoopMergeProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/LoopMergeProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/LoopMergeProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/NumberFormatProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/NumberFormatProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/NumberFormatProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/NumberFormatProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/OnceAbsoluteMergeProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/OnceAbsoluteMergeProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/OnceAbsoluteMergeProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/OnceAbsoluteMergeProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/RowHeightProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/RowHeightProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/RowHeightProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/RowHeightProperty.java
diff --git a/src/main/java/com/alibaba/excel/metadata/property/StyleProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/StyleProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/metadata/property/StyleProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/metadata/property/StyleProperty.java
diff --git a/src/main/java/com/alibaba/excel/read/builder/AbstractExcelReaderParameterBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/builder/AbstractExcelReaderParameterBuilder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/builder/AbstractExcelReaderParameterBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/builder/AbstractExcelReaderParameterBuilder.java
diff --git a/src/main/java/com/alibaba/excel/read/builder/ExcelReaderBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/builder/ExcelReaderBuilder.java
similarity index 92%
rename from src/main/java/com/alibaba/excel/read/builder/ExcelReaderBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/builder/ExcelReaderBuilder.java
index b630eea2..d2a24b44 100644
--- a/src/main/java/com/alibaba/excel/read/builder/ExcelReaderBuilder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/builder/ExcelReaderBuilder.java
@@ -2,6 +2,7 @@ package com.alibaba.excel.read.builder;
import java.io.File;
import java.io.InputStream;
+import java.nio.charset.Charset;
import java.util.HashSet;
import java.util.List;
@@ -27,7 +28,7 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder
@@ -151,10 +161,10 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder
* Please pass in the name of a class ,like : "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"
*
- * @see SAXParserFactory#newInstance()
- * @see SAXParserFactory#newInstance(String, ClassLoader)
* @param xlsxSAXParserFactoryName
* @return
+ * @see SAXParserFactory#newInstance()
+ * @see SAXParserFactory#newInstance(String, ClassLoader)
*/
public ExcelReaderBuilder xlsxSAXParserFactoryName(String xlsxSAXParserFactoryName) {
readWorkbook.setXlsxSAXParserFactoryName(xlsxSAXParserFactoryName);
@@ -164,8 +174,7 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder List doReadAllSync() {
SyncReadListener syncReadListener = new SyncReadListener();
registerReadListener(syncReadListener);
- ExcelReader excelReader = build();
- excelReader.readAll();
- excelReader.finish();
+ try (ExcelReader excelReader = build()) {
+ excelReader.readAll();
+ excelReader.finish();
+ }
return (List)syncReadListener.getList();
}
diff --git a/src/main/java/com/alibaba/excel/read/builder/ExcelReaderSheetBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/builder/ExcelReaderSheetBuilder.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/read/builder/ExcelReaderSheetBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/builder/ExcelReaderSheetBuilder.java
index 84ec6bae..4778169b 100644
--- a/src/main/java/com/alibaba/excel/read/builder/ExcelReaderSheetBuilder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/builder/ExcelReaderSheetBuilder.java
@@ -18,7 +18,7 @@ public class ExcelReaderSheetBuilder extends AbstractExcelReaderParameterBuilder
/**
* Sheet
*/
- private ReadSheet readSheet;
+ private final ReadSheet readSheet;
public ExcelReaderSheetBuilder() {
this.readSheet = new ReadSheet();
diff --git a/src/main/java/com/alibaba/excel/read/listener/IgnoreExceptionReadListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/IgnoreExceptionReadListener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/listener/IgnoreExceptionReadListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/listener/IgnoreExceptionReadListener.java
diff --git a/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java
similarity index 99%
rename from src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java
index 057919e9..44f77513 100644
--- a/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java
@@ -15,8 +15,8 @@ import com.alibaba.excel.util.ClassUtils;
import com.alibaba.excel.util.ConverterUtils;
import com.alibaba.excel.util.MapUtils;
-import net.sf.cglib.beans.BeanMap;
import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.cglib.beans.BeanMap;
/**
* Convert to the object the user needs
diff --git a/src/main/java/com/alibaba/excel/read/listener/PageReadListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/PageReadListener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/listener/PageReadListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/listener/PageReadListener.java
diff --git a/src/main/java/com/alibaba/excel/read/listener/ReadListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ReadListener.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/listener/ReadListener.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ReadListener.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/ReadBasicParameter.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadBasicParameter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/ReadBasicParameter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadBasicParameter.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/ReadSheet.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadSheet.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/ReadSheet.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadSheet.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
similarity index 95%
rename from src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
index 54ab034c..4f3a3aab 100644
--- a/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
@@ -2,6 +2,7 @@ package com.alibaba.excel.read.metadata;
import java.io.File;
import java.io.InputStream;
+import java.nio.charset.Charset;
import java.util.Set;
import javax.xml.parsers.SAXParserFactory;
@@ -43,6 +44,11 @@ public class ReadWorkbook extends ReadBasicParameter {
* If 'inputStream' and 'file' all not empty, file first
*/
private File file;
+ /**
+ * charset.
+ * Only work on the CSV file
+ */
+ private Charset charset;
/**
* Mandatory use 'inputStream' .Default is false.
*
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/ReadHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/ReadHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/ReadRowHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadRowHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/ReadRowHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadRowHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/ReadSheetHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadSheetHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/ReadSheetHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadSheetHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
similarity index 94%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
index 7de30aa5..a84cc315 100644
--- a/src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
@@ -2,6 +2,7 @@ package com.alibaba.excel.read.metadata.holder;
import java.io.File;
import java.io.InputStream;
+import java.nio.charset.Charset;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -51,6 +52,12 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
* If 'inputStream' and 'file' all not empty, file first
*/
private File file;
+
+ /**
+ * charset.
+ * Only work on the CSV file
+ */
+ private Charset charset;
/**
* Mandatory use 'inputStream' .Default is false.
*
@@ -68,7 +75,6 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
/**
* This object can be read in the Listener {@link AnalysisEventListener#invoke(Object, AnalysisContext)}
* {@link AnalysisContext#getCustom()}
- *
*/
private Object customObject;
/**
@@ -122,6 +128,13 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
this.inputStream = readWorkbook.getInputStream();
}
this.file = readWorkbook.getFile();
+
+ if (readWorkbook.getCharset() == null) {
+ this.charset = Charset.defaultCharset();
+ } else {
+ this.charset = readWorkbook.getCharset();
+ }
+
if (readWorkbook.getMandatoryUseInputStream() == null) {
this.mandatoryUseInputStream = Boolean.FALSE;
} else {
@@ -160,7 +173,6 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
this.password = readWorkbook.getPassword();
}
-
@Override
public HolderEnum holderType() {
return HolderEnum.WORKBOOK;
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadSheetHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadSheetHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadSheetHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadSheetHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java
similarity index 90%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java
index 0a322d58..90ebe2b5 100644
--- a/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java
@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
/**
* Workbook holder
@@ -20,6 +21,7 @@ import org.apache.commons.csv.CSVFormat;
public class CsvReadWorkbookHolder extends ReadWorkbookHolder {
private CSVFormat csvFormat;
+ private CSVParser csvParser;
public CsvReadWorkbookHolder(ReadWorkbook readWorkbook) {
super(readWorkbook);
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadSheetHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadSheetHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadSheetHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadSheetHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadWorkbookHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadWorkbookHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadWorkbookHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xls/XlsReadWorkbookHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadSheetHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadSheetHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadSheetHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadSheetHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadWorkbookHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadWorkbookHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadWorkbookHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/xlsx/XlsxReadWorkbookHolder.java
diff --git a/src/main/java/com/alibaba/excel/read/metadata/property/ExcelReadHeadProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/property/ExcelReadHeadProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/metadata/property/ExcelReadHeadProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/property/ExcelReadHeadProperty.java
diff --git a/src/main/java/com/alibaba/excel/read/processor/AnalysisEventProcessor.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/processor/AnalysisEventProcessor.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/read/processor/AnalysisEventProcessor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/processor/AnalysisEventProcessor.java
diff --git a/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java
similarity index 99%
rename from src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java
index 914a9654..45edb7b7 100644
--- a/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java
@@ -37,7 +37,7 @@ public class DefaultAnalysisEventProcessor implements AnalysisEventProcessor {
public void endRow(AnalysisContext analysisContext) {
if (RowTypeEnum.EMPTY.equals(analysisContext.readRowHolder().getRowType())) {
if (LOGGER.isDebugEnabled()) {
- LOGGER.warn("Empty row!");
+ LOGGER.debug("Empty row!");
}
if (analysisContext.readWorkbookHolder().getIgnoreEmptyRow()) {
return;
diff --git a/src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
similarity index 76%
rename from src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
index eb4c4cbd..09ab04ec 100644
--- a/src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
@@ -10,31 +10,38 @@ import com.alibaba.excel.exception.ExcelCommonException;
import com.alibaba.excel.read.metadata.ReadWorkbook;
import com.alibaba.excel.util.StringUtils;
-import org.apache.poi.poifs.filesystem.FileMagic;
+import lombok.Getter;
+import org.apache.poi.util.IOUtils;
/**
* @author jipengfei
*/
+@Getter
public enum ExcelTypeEnum {
+
/**
* csv
*/
- CSV(".csv"),
+ CSV(".csv", new byte[] {-27, -89, -109, -27}),
/**
* xls
*/
- XLS(".xls"),
+ XLS(".xls", new byte[] {-48, -49, 17, -32, -95, -79, 26, -31}),
/**
* xlsx
*/
- XLSX(".xlsx");
+ XLSX(".xlsx", new byte[] {80, 75, 3, 4});
- private String value;
+ final String value;
+ final byte[] magic;
- ExcelTypeEnum(String value) {
- this.setValue(value);
+ ExcelTypeEnum(String value, byte[] magic) {
+ this.value = value;
+ this.magic = magic;
}
+ final static int MAX_PATTERN_LENGTH = 8;
+
public static ExcelTypeEnum valueOf(ReadWorkbook readWorkbook) {
ExcelTypeEnum excelType = readWorkbook.getExcelType();
if (excelType != null) {
@@ -85,22 +92,27 @@ public enum ExcelTypeEnum {
}
private static ExcelTypeEnum recognitionExcelType(InputStream inputStream) throws Exception {
- FileMagic fileMagic = FileMagic.valueOf(inputStream);
- if (FileMagic.OLE2.equals(fileMagic)) {
- return XLS;
- }
- if (FileMagic.OOXML.equals(fileMagic)) {
+ // Grab the first bytes of this stream
+ byte[] data = IOUtils.peekFirstNBytes(inputStream, MAX_PATTERN_LENGTH);
+ if (findMagic(XLSX.magic, data)) {
return XLSX;
+ } else if (findMagic(CSV.magic, data)) {
+ return CSV;
+ } else if (findMagic(XLS.magic, data)) {
+ return XLS;
}
throw new ExcelCommonException(
"Convert excel format exception.You can try specifying the 'excelType' yourself");
}
- public String getValue() {
- return value;
+ private static boolean findMagic(byte[] expected, byte[] actual) {
+ int i = 0;
+ for (byte expectedByte : expected) {
+ if (actual[i++] != expectedByte && expectedByte != '?') {
+ return false;
+ }
+ }
+ return true;
}
- public void setValue(String value) {
- this.value = value;
- }
}
diff --git a/src/main/java/com/alibaba/excel/util/BeanMapUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/BeanMapUtils.java
similarity index 82%
rename from src/main/java/com/alibaba/excel/util/BeanMapUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/BeanMapUtils.java
index eab4a70f..30b2c692 100644
--- a/src/main/java/com/alibaba/excel/util/BeanMapUtils.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/util/BeanMapUtils.java
@@ -1,8 +1,7 @@
package com.alibaba.excel.util;
-import net.sf.cglib.beans.BeanMap;
-import net.sf.cglib.beans.BeanMap.Generator;
-import net.sf.cglib.core.DefaultNamingPolicy;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.cglib.core.DefaultNamingPolicy;
/**
* bean utils
@@ -23,8 +22,9 @@ public class BeanMapUtils {
* @return a new BeanMap instance
*/
public static BeanMap create(Object bean) {
- Generator gen = new Generator();
+ BeanMap.Generator gen = new BeanMap.Generator();
gen.setBean(bean);
+ gen.setContextClass(bean.getClass());
gen.setNamingPolicy(EasyExcelNamingPolicy.INSTANCE);
return gen.create();
}
diff --git a/src/main/java/com/alibaba/excel/util/BooleanUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/BooleanUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/BooleanUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/BooleanUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/ClassUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/ClassUtils.java
similarity index 84%
rename from src/main/java/com/alibaba/excel/util/ClassUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/ClassUtils.java
index f79dfdcc..6bed3052 100644
--- a/src/main/java/com/alibaba/excel/util/ClassUtils.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/util/ClassUtils.java
@@ -35,7 +35,7 @@ import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
-import net.sf.cglib.beans.BeanMap;
+import org.springframework.cglib.beans.BeanMap;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -162,7 +162,7 @@ public class ClassUtils {
Class extends Converter>> convertClazz = excelProperty.converter();
if (convertClazz != AutoConverter.class) {
try {
- Converter> converter = convertClazz.newInstance();
+ Converter> converter = convertClazz.getDeclaredConstructor().newInstance();
excelContentProperty.setConverter(converter);
} catch (Exception e) {
throw new ExcelCommonException(
@@ -195,17 +195,17 @@ public class ClassUtils {
}
/**
- * Parsing filed in the class
+ * Parsing field in the class
*
* @param clazz Need to parse the class
- * @param sortedAllFiledMap Complete the map of sorts
- * @param indexFiledMap Use the index to sort fields
+ * @param sortedAllFieldMap Complete the map of sorts
+ * @param indexFieldMap Use the index to sort fields
* @param ignoreMap You want to ignore field map
* @param needIgnore If you want to ignore fields need to ignore
* @param holder holder
*/
- public static void declaredFields(Class> clazz, Map sortedAllFiledMap,
- Map indexFiledMap, Map ignoreMap, Boolean needIgnore, Holder holder) {
+ public static void declaredFields(Class> clazz, Map sortedAllFieldMap,
+ Map indexFieldMap, Map ignoreMap, Boolean needIgnore, Holder holder) {
FieldCache fieldCache = declaredFields(clazz);
if (fieldCache == null) {
return;
@@ -213,20 +213,20 @@ public class ClassUtils {
if (ignoreMap != null) {
ignoreMap.putAll(fieldCache.getIgnoreMap());
}
- Map tempIndexFieldMap = indexFiledMap;
+ Map tempIndexFieldMap = indexFieldMap;
if (tempIndexFieldMap == null) {
tempIndexFieldMap = MapUtils.newTreeMap();
}
- tempIndexFieldMap.putAll(fieldCache.getIndexFiledMap());
+ tempIndexFieldMap.putAll(fieldCache.getIndexFieldMap());
- Map originSortedAllFiledMap = fieldCache.getSortedAllFiledMap();
+ Map originSortedAllFieldMap = fieldCache.getSortedAllFieldMap();
if (!needIgnore) {
- sortedAllFiledMap.putAll(originSortedAllFiledMap);
+ sortedAllFieldMap.putAll(originSortedAllFieldMap);
return;
}
int index = 0;
- for (Map.Entry entry : originSortedAllFiledMap.entrySet()) {
+ for (Map.Entry entry : originSortedAllFieldMap.entrySet()) {
Integer key = entry.getKey();
Field field = entry.getValue();
@@ -239,22 +239,22 @@ public class ClassUtils {
} else {
// Mandatory sorted fields
if (tempIndexFieldMap.containsKey(key)) {
- sortedAllFiledMap.put(key, field);
+ sortedAllFieldMap.put(key, field);
} else {
// Need to reorder automatically
// Check whether the current key is already in use
- while (sortedAllFiledMap.containsKey(index)) {
+ while (sortedAllFieldMap.containsKey(index)) {
index++;
}
- sortedAllFiledMap.put(index++, field);
+ sortedAllFieldMap.put(index++, field);
}
}
}
}
- public static void declaredFields(Class> clazz, Map sortedAllFiledMap, Boolean needIgnore,
+ public static void declaredFields(Class> clazz, Map sortedAllFieldMap, Boolean needIgnore,
WriteHolder writeHolder) {
- declaredFields(clazz, sortedAllFiledMap, null, null, needIgnore, writeHolder);
+ declaredFields(clazz, sortedAllFieldMap, null, null, needIgnore, writeHolder);
}
private static FieldCache declaredFields(Class> clazz) {
@@ -272,43 +272,43 @@ public class ClassUtils {
tempClass = tempClass.getSuperclass();
}
// Screening of field
- Map> orderFiledMap = new TreeMap>();
- Map indexFiledMap = new TreeMap();
+ Map> orderFieldMap = new TreeMap>();
+ Map indexFieldMap = new TreeMap();
Map ignoreMap = new HashMap(16);
ExcelIgnoreUnannotated excelIgnoreUnannotated = clazz.getAnnotation(ExcelIgnoreUnannotated.class);
for (Field field : tempFieldList) {
- declaredOneField(field, orderFiledMap, indexFiledMap, ignoreMap, excelIgnoreUnannotated);
+ declaredOneField(field, orderFieldMap, indexFieldMap, ignoreMap, excelIgnoreUnannotated);
}
- return new FieldCache(buildSortedAllFiledMap(orderFiledMap, indexFiledMap), indexFiledMap, ignoreMap);
+ return new FieldCache(buildSortedAllFieldMap(orderFieldMap, indexFieldMap), indexFieldMap, ignoreMap);
});
}
- private static Map buildSortedAllFiledMap(Map> orderFiledMap,
- Map indexFiledMap) {
+ private static Map buildSortedAllFieldMap(Map> orderFieldMap,
+ Map indexFieldMap) {
- Map sortedAllFiledMap = new HashMap(
- (orderFiledMap.size() + indexFiledMap.size()) * 4 / 3 + 1);
+ Map sortedAllFieldMap = new HashMap(
+ (orderFieldMap.size() + indexFieldMap.size()) * 4 / 3 + 1);
- Map tempIndexFiledMap = new HashMap(indexFiledMap);
+ Map tempIndexFieldMap = new HashMap(indexFieldMap);
int index = 0;
- for (List fieldList : orderFiledMap.values()) {
+ for (List fieldList : orderFieldMap.values()) {
for (Field field : fieldList) {
- while (tempIndexFiledMap.containsKey(index)) {
- sortedAllFiledMap.put(index, tempIndexFiledMap.get(index));
- tempIndexFiledMap.remove(index);
+ while (tempIndexFieldMap.containsKey(index)) {
+ sortedAllFieldMap.put(index, tempIndexFieldMap.get(index));
+ tempIndexFieldMap.remove(index);
index++;
}
- sortedAllFiledMap.put(index, field);
+ sortedAllFieldMap.put(index, field);
index++;
}
}
- sortedAllFiledMap.putAll(tempIndexFiledMap);
- return sortedAllFiledMap;
+ sortedAllFieldMap.putAll(tempIndexFieldMap);
+ return sortedAllFieldMap;
}
- private static void declaredOneField(Field field, Map> orderFiledMap,
- Map indexFiledMap, Map ignoreMap,
+ private static void declaredOneField(Field field, Map> orderFieldMap,
+ Map indexFieldMap, Map ignoreMap,
ExcelIgnoreUnannotated excelIgnoreUnannotated) {
ExcelIgnore excelIgnore = field.getAnnotation(ExcelIgnore.class);
@@ -330,11 +330,11 @@ public class ClassUtils {
return;
}
if (excelProperty != null && excelProperty.index() >= 0) {
- if (indexFiledMap.containsKey(excelProperty.index())) {
- throw new ExcelCommonException("The index of '" + indexFiledMap.get(excelProperty.index()).getName()
+ if (indexFieldMap.containsKey(excelProperty.index())) {
+ throw new ExcelCommonException("The index of '" + indexFieldMap.get(excelProperty.index()).getName()
+ "' and '" + field.getName() + "' must be inconsistent");
}
- indexFiledMap.put(excelProperty.index(), field);
+ indexFieldMap.put(excelProperty.index(), field);
return;
}
@@ -342,29 +342,29 @@ public class ClassUtils {
if (excelProperty != null) {
order = excelProperty.order();
}
- List orderFiledList = orderFiledMap.computeIfAbsent(order, key -> ListUtils.newArrayList());
- orderFiledList.add(field);
+ List orderFieldList = orderFieldMap.computeIfAbsent(order, key -> ListUtils.newArrayList());
+ orderFieldList.add(field);
}
private static class FieldCache {
- private final Map sortedAllFiledMap;
- private final Map indexFiledMap;
+ private final Map sortedAllFieldMap;
+ private final Map indexFieldMap;
private final Map ignoreMap;
- public FieldCache(Map sortedAllFiledMap, Map indexFiledMap,
+ public FieldCache(Map sortedAllFieldMap, Map indexFieldMap,
Map ignoreMap) {
- this.sortedAllFiledMap = sortedAllFiledMap;
- this.indexFiledMap = indexFiledMap;
+ this.sortedAllFieldMap = sortedAllFieldMap;
+ this.indexFieldMap = indexFieldMap;
this.ignoreMap = ignoreMap;
}
- public Map getSortedAllFiledMap() {
- return sortedAllFiledMap;
+ public Map getSortedAllFieldMap() {
+ return sortedAllFieldMap;
}
- public Map getIndexFiledMap() {
- return indexFiledMap;
+ public Map getIndexFieldMap() {
+ return indexFieldMap;
}
public Map getIgnoreMap() {
diff --git a/src/main/java/com/alibaba/excel/util/ConverterUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/ConverterUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/ConverterUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/ConverterUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/DateUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/DateUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/DateUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/DateUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/FieldUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/FieldUtils.java
similarity index 97%
rename from src/main/java/com/alibaba/excel/util/FieldUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/FieldUtils.java
index 0a825a7b..42cc3e4a 100644
--- a/src/main/java/com/alibaba/excel/util/FieldUtils.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/util/FieldUtils.java
@@ -6,7 +6,7 @@ import java.util.Map;
import com.alibaba.excel.metadata.NullObject;
-import net.sf.cglib.beans.BeanMap;
+import org.springframework.cglib.beans.BeanMap;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -30,9 +30,9 @@ public class FieldUtils {
private static final int START_RESOLVE_FIELD_LENGTH = 2;
- public static Class> getFieldClass(Map dataMap, String filedName, Object value) {
+ public static Class> getFieldClass(Map dataMap, String fieldName, Object value) {
if (dataMap instanceof BeanMap) {
- Class> fieldClass = ((BeanMap)dataMap).getPropertyType(filedName);
+ Class> fieldClass = ((BeanMap)dataMap).getPropertyType(fieldName);
if (fieldClass != null) {
return fieldClass;
}
diff --git a/src/main/java/com/alibaba/excel/util/FileTypeUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/FileTypeUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/FileTypeUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/FileTypeUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/FileUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/FileUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/FileUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/FileUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/IntUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/IntUtils.java
similarity index 94%
rename from src/main/java/com/alibaba/excel/util/IntUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/IntUtils.java
index 6d2e244c..bca73f10 100644
--- a/src/main/java/com/alibaba/excel/util/IntUtils.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/util/IntUtils.java
@@ -1,8 +1,5 @@
package com.alibaba.excel.util;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Int utils
*
diff --git a/src/main/java/com/alibaba/excel/util/IoUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/IoUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/IoUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/IoUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/ListUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/ListUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/ListUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/ListUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/MapUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/MapUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/MapUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/MapUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/MemberUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/MemberUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/MemberUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/MemberUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/NumberUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/NumberUtils.java
similarity index 90%
rename from src/main/java/com/alibaba/excel/util/NumberUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/NumberUtils.java
index c467762c..4646c396 100644
--- a/src/main/java/com/alibaba/excel/util/NumberUtils.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/util/NumberUtils.java
@@ -75,7 +75,7 @@ public class NumberUtils {
*/
public static Short parseShort(String string, ExcelContentProperty contentProperty) throws ParseException {
if (!hasFormat(contentProperty)) {
- return Short.valueOf(string);
+ return new BigDecimal(string).shortValue();
}
return parse(string, contentProperty).shortValue();
}
@@ -89,21 +89,21 @@ public class NumberUtils {
*/
public static Long parseLong(String string, ExcelContentProperty contentProperty) throws ParseException {
if (!hasFormat(contentProperty)) {
- return Long.valueOf(string);
+ return new BigDecimal(string).longValue();
}
return parse(string, contentProperty).longValue();
}
/**
- * parse
+ * parse Integer from string
*
- * @param string
- * @param contentProperty
- * @return
+ * @param string An integer read in string format
+ * @param contentProperty Properties of the content read in
+ * @return An integer converted from a string
*/
public static Integer parseInteger(String string, ExcelContentProperty contentProperty) throws ParseException {
if (!hasFormat(contentProperty)) {
- return Integer.valueOf(string);
+ return new BigDecimal(string).intValue();
}
return parse(string, contentProperty).intValue();
}
@@ -117,7 +117,7 @@ public class NumberUtils {
*/
public static Float parseFloat(String string, ExcelContentProperty contentProperty) throws ParseException {
if (!hasFormat(contentProperty)) {
- return Float.valueOf(string);
+ return new BigDecimal(string).floatValue();
}
return parse(string, contentProperty).floatValue();
}
@@ -146,7 +146,7 @@ public class NumberUtils {
*/
public static Byte parseByte(String string, ExcelContentProperty contentProperty) throws ParseException {
if (!hasFormat(contentProperty)) {
- return Byte.valueOf(string);
+ return new BigDecimal(string).byteValue();
}
return parse(string, contentProperty).byteValue();
}
@@ -160,7 +160,7 @@ public class NumberUtils {
*/
public static Double parseDouble(String string, ExcelContentProperty contentProperty) throws ParseException {
if (!hasFormat(contentProperty)) {
- return Double.valueOf(string);
+ return new BigDecimal(string).doubleValue();
}
return parse(string, contentProperty).doubleValue();
}
diff --git a/src/main/java/com/alibaba/excel/util/PositionUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/PositionUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/PositionUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/PositionUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/SheetUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/SheetUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/SheetUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/SheetUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/StringUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/StringUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/StringUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/StringUtils.java
diff --git a/src/main/java/com/alibaba/excel/util/StyleUtil.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/StyleUtil.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/StyleUtil.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/StyleUtil.java
diff --git a/src/main/java/com/alibaba/excel/util/Validate.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/Validate.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/Validate.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/Validate.java
diff --git a/src/main/java/com/alibaba/excel/util/WorkBookUtil.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/WorkBookUtil.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/WorkBookUtil.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/WorkBookUtil.java
diff --git a/src/main/java/com/alibaba/excel/util/WriteHandlerUtils.java b/easyexcel-core/src/main/java/com/alibaba/excel/util/WriteHandlerUtils.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/util/WriteHandlerUtils.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/util/WriteHandlerUtils.java
diff --git a/src/main/java/com/alibaba/excel/write/ExcelBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/ExcelBuilder.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/write/ExcelBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/ExcelBuilder.java
index a9f7e601..6a323388 100644
--- a/src/main/java/com/alibaba/excel/write/ExcelBuilder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/ExcelBuilder.java
@@ -1,7 +1,6 @@
package com.alibaba.excel.write;
import java.util.Collection;
-import java.util.List;
import com.alibaba.excel.context.WriteContext;
import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy;
diff --git a/src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
similarity index 98%
rename from src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
index d6503c6c..67e2b9a2 100644
--- a/src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
@@ -22,7 +22,7 @@ import org.apache.poi.ss.util.CellRangeAddress;
*/
public class ExcelBuilderImpl implements ExcelBuilder {
- private WriteContext context;
+ private final WriteContext context;
private ExcelWriteFillExecutor excelWriteFillExecutor;
private ExcelWriteAddExecutor excelWriteAddExecutor;
diff --git a/src/main/java/com/alibaba/excel/write/builder/AbstractExcelWriterParameterBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/builder/AbstractExcelWriterParameterBuilder.java
similarity index 77%
rename from src/main/java/com/alibaba/excel/write/builder/AbstractExcelWriterParameterBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/builder/AbstractExcelWriterParameterBuilder.java
index 751ae5cd..f8844a52 100644
--- a/src/main/java/com/alibaba/excel/write/builder/AbstractExcelWriterParameterBuilder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/builder/AbstractExcelWriterParameterBuilder.java
@@ -77,11 +77,21 @@ public abstract class AbstractExcelWriterParameterBuilder excludeColumnFieldNames) {
+ parameter().setExcludeColumnFieldNames(excludeColumnFieldNames);
+ return self();
+ }
+
/**
* Ignore the custom columns.
*/
- public T excludeColumnFiledNames(Collection excludeColumnFiledNames) {
- parameter().setExcludeColumnFieldNames(excludeColumnFiledNames);
+ public T excludeColumnFieldNames(Collection excludeColumnFieldNames) {
+ parameter().setExcludeColumnFieldNames(excludeColumnFieldNames);
return self();
}
@@ -95,10 +105,19 @@ public abstract class AbstractExcelWriterParameterBuilder includeColumnFiledNames) {
- parameter().setIncludeColumnFieldNames(includeColumnFiledNames);
+ public T includeColumnFiledNames(Collection includeColumnFieldNames) {
+ parameter().setIncludeColumnFieldNames(includeColumnFieldNames);
return self();
}
+ /**
+ * Only output the custom columns.
+ */
+ public T includeColumnFieldNames(Collection includeColumnFieldNames) {
+ parameter().setIncludeColumnFieldNames(includeColumnFieldNames);
+ return self();
+ }
}
diff --git a/src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
similarity index 94%
rename from src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
index dcd0a80d..75d702f8 100644
--- a/src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
@@ -3,6 +3,7 @@ package com.alibaba.excel.write.builder;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.charset.Charset;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
@@ -85,6 +86,15 @@ public class ExcelWriterBuilder extends AbstractExcelWriterParameterBuilder sortedAllFiledMap = new TreeMap<>();
+ // BeanMap is out of order, so use sortedAllFieldMap
+ Map sortedAllFieldMap = new TreeMap<>();
int relativeRowIndex = 0;
for (Object oneRowData : data) {
int lastRowIndex = relativeRowIndex + newRowIndex;
- addOneRowOfDataToExcel(oneRowData, lastRowIndex, relativeRowIndex, sortedAllFiledMap);
+ addOneRowOfDataToExcel(oneRowData, lastRowIndex, relativeRowIndex, sortedAllFieldMap);
relativeRowIndex++;
}
}
private void addOneRowOfDataToExcel(Object oneRowData, int rowIndex, int relativeRowIndex,
- Map sortedAllFiledMap) {
+ Map sortedAllFieldMap) {
if (oneRowData == null) {
return;
}
@@ -79,7 +79,7 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
} else if (oneRowData instanceof Map) {
addBasicTypeToExcel(new MapRowData((Map)oneRowData), row, rowIndex, relativeRowIndex);
} else {
- addJavaObjectToExcel(oneRowData, row, rowIndex, relativeRowIndex, sortedAllFiledMap);
+ addJavaObjectToExcel(oneRowData, row, rowIndex, relativeRowIndex, sortedAllFieldMap);
}
WriteHandlerUtils.afterRowDispose(rowWriteHandlerContext);
@@ -139,7 +139,7 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
}
private void addJavaObjectToExcel(Object oneRowData, Row row, int rowIndex, int relativeRowIndex,
- Map sortedAllFiledMap) {
+ Map sortedAllFieldMap) {
WriteHolder currentWriteHolder = writeContext.currentWriteHolder();
BeanMap beanMap = BeanMapUtils.create(oneRowData);
// Bean the contains of the Map Key method with poor performance,So to create a keySet here
@@ -186,18 +186,18 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
maxCellIndex++;
Map ignoreMap = writeContext.currentWriteHolder().excelWriteHeadProperty().getIgnoreMap();
- initSortedAllFiledMapFieldList(oneRowData.getClass(), sortedAllFiledMap);
- for (Map.Entry entry : sortedAllFiledMap.entrySet()) {
+ initSortedAllFieldMapFieldList(oneRowData.getClass(), sortedAllFieldMap);
+ for (Map.Entry entry : sortedAllFieldMap.entrySet()) {
Field field = entry.getValue();
- String filedName = FieldUtils.resolveCglibFieldName(field);
- boolean uselessData = !beanKeySet.contains(filedName) || beanMapHandledSet.contains(filedName)
- || ignoreMap.containsKey(filedName);
+ String fieldName = FieldUtils.resolveCglibFieldName(field);
+ boolean uselessData = !beanKeySet.contains(fieldName) || beanMapHandledSet.contains(fieldName)
+ || ignoreMap.containsKey(fieldName);
if (uselessData) {
continue;
}
- Object value = beanMap.get(filedName);
+ Object value = beanMap.get(fieldName);
ExcelContentProperty excelContentProperty = ClassUtils.declaredExcelContentProperty(beanMap,
- currentWriteHolder.excelWriteHeadProperty().getHeadClazz(), filedName);
+ currentWriteHolder.excelWriteHeadProperty().getHeadClazz(), fieldName);
CellWriteHandlerContext cellWriteHandlerContext = WriteHandlerUtils.createCellWriteHandlerContext(
writeContext, row, rowIndex, null, maxCellIndex, relativeRowIndex, Boolean.FALSE, excelContentProperty);
WriteHandlerUtils.beforeCellCreate(cellWriteHandlerContext);
@@ -210,7 +210,7 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
WriteHandlerUtils.afterCellCreate(cellWriteHandlerContext);
cellWriteHandlerContext.setOriginalValue(value);
- cellWriteHandlerContext.setOriginalFieldClass(FieldUtils.getFieldClass(beanMap, filedName, value));
+ cellWriteHandlerContext.setOriginalFieldClass(FieldUtils.getFieldClass(beanMap, fieldName, value));
converterAndSet(cellWriteHandlerContext);
WriteHandlerUtils.afterCellDispose(cellWriteHandlerContext);
@@ -218,8 +218,8 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
}
}
- private void initSortedAllFiledMapFieldList(Class> clazz, Map sortedAllFiledMap) {
- if (!sortedAllFiledMap.isEmpty()) {
+ private void initSortedAllFieldMapFieldList(Class> clazz, Map sortedAllFieldMap) {
+ if (!sortedAllFieldMap.isEmpty()) {
return;
}
@@ -229,7 +229,7 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
.isEmpty(writeSheetHolder.getExcludeColumnIndexes()) || !CollectionUtils
.isEmpty(writeSheetHolder.getIncludeColumnFieldNames()) || !CollectionUtils
.isEmpty(writeSheetHolder.getIncludeColumnIndexes());
- ClassUtils.declaredFields(clazz, sortedAllFiledMap, needIgnore, writeSheetHolder);
+ ClassUtils.declaredFields(clazz, sortedAllFieldMap, needIgnore, writeSheetHolder);
}
}
diff --git a/src/main/java/com/alibaba/excel/write/executor/ExcelWriteExecutor.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteExecutor.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/executor/ExcelWriteExecutor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteExecutor.java
diff --git a/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/AbstractCellWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractCellWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/AbstractCellWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractCellWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/AbstractRowWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractRowWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/AbstractRowWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractRowWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/AbstractSheetWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractSheetWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/AbstractSheetWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractSheetWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/AbstractWorkbookWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractWorkbookWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/AbstractWorkbookWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/AbstractWorkbookWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/CellWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/CellWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/CellWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/CellWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/DefaultWriteHandlerLoader.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/DefaultWriteHandlerLoader.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/DefaultWriteHandlerLoader.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/DefaultWriteHandlerLoader.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/RowWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/RowWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/RowWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/RowWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/SheetWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/SheetWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/SheetWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/SheetWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/WorkbookWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/WorkbookWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/WorkbookWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/WorkbookWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/WriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/WriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/WriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/WriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/chain/CellHandlerExecutionChain.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/CellHandlerExecutionChain.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/chain/CellHandlerExecutionChain.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/CellHandlerExecutionChain.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/chain/RowHandlerExecutionChain.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/RowHandlerExecutionChain.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/chain/RowHandlerExecutionChain.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/RowHandlerExecutionChain.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/chain/SheetHandlerExecutionChain.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/SheetHandlerExecutionChain.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/chain/SheetHandlerExecutionChain.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/SheetHandlerExecutionChain.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/chain/WorkbookHandlerExecutionChain.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/WorkbookHandlerExecutionChain.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/chain/WorkbookHandlerExecutionChain.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/chain/WorkbookHandlerExecutionChain.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/context/CellWriteHandlerContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/CellWriteHandlerContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/context/CellWriteHandlerContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/CellWriteHandlerContext.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/context/RowWriteHandlerContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/RowWriteHandlerContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/context/RowWriteHandlerContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/RowWriteHandlerContext.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/context/SheetWriteHandlerContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/SheetWriteHandlerContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/context/SheetWriteHandlerContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/SheetWriteHandlerContext.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/context/WorkbookWriteHandlerContext.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/WorkbookWriteHandlerContext.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/context/WorkbookWriteHandlerContext.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/context/WorkbookWriteHandlerContext.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/impl/DefaultRowWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/impl/DefaultRowWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/impl/DefaultRowWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/impl/DefaultRowWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/impl/DimensionWorkbookWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/impl/DimensionWorkbookWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/impl/DimensionWorkbookWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/impl/DimensionWorkbookWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/handler/impl/FillStyleCellWriteHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/handler/impl/FillStyleCellWriteHandler.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/handler/impl/FillStyleCellWriteHandler.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/handler/impl/FillStyleCellWriteHandler.java
diff --git a/src/main/java/com/alibaba/excel/write/merge/AbstractMergeStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/merge/AbstractMergeStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/merge/AbstractMergeStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/merge/AbstractMergeStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/merge/LoopMergeStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/merge/LoopMergeStrategy.java
similarity index 95%
rename from src/main/java/com/alibaba/excel/write/merge/LoopMergeStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/merge/LoopMergeStrategy.java
index 961db51f..79db35b7 100644
--- a/src/main/java/com/alibaba/excel/write/merge/LoopMergeStrategy.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/merge/LoopMergeStrategy.java
@@ -15,15 +15,15 @@ public class LoopMergeStrategy implements RowWriteHandler {
/**
* Each row
*/
- private int eachRow;
+ private final int eachRow;
/**
* Extend column
*/
- private int columnExtend;
+ private final int columnExtend;
/**
* The number of the current column
*/
- private int columnIndex;
+ private final int columnIndex;
public LoopMergeStrategy(int eachRow, int columnIndex) {
this(eachRow, 1, columnIndex);
diff --git a/src/main/java/com/alibaba/excel/write/merge/OnceAbsoluteMergeStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/merge/OnceAbsoluteMergeStrategy.java
similarity index 90%
rename from src/main/java/com/alibaba/excel/write/merge/OnceAbsoluteMergeStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/merge/OnceAbsoluteMergeStrategy.java
index 0fe3dd61..273d8879 100644
--- a/src/main/java/com/alibaba/excel/write/merge/OnceAbsoluteMergeStrategy.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/merge/OnceAbsoluteMergeStrategy.java
@@ -3,7 +3,6 @@ package com.alibaba.excel.write.merge;
import org.apache.poi.ss.util.CellRangeAddress;
import com.alibaba.excel.metadata.property.OnceAbsoluteMergeProperty;
-import com.alibaba.excel.write.handler.AbstractSheetWriteHandler;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
@@ -17,19 +16,19 @@ public class OnceAbsoluteMergeStrategy implements SheetWriteHandler {
/**
* First row
*/
- private int firstRowIndex;
+ private final int firstRowIndex;
/**
* Last row
*/
- private int lastRowIndex;
+ private final int lastRowIndex;
/**
* First column
*/
- private int firstColumnIndex;
+ private final int firstColumnIndex;
/**
* Last row
*/
- private int lastColumnIndex;
+ private final int lastColumnIndex;
public OnceAbsoluteMergeStrategy(int firstRowIndex, int lastRowIndex, int firstColumnIndex, int lastColumnIndex) {
if (firstRowIndex < 0 || lastRowIndex < 0 || firstColumnIndex < 0 || lastColumnIndex < 0) {
diff --git a/src/main/java/com/alibaba/excel/write/metadata/CollectionRowData.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/CollectionRowData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/CollectionRowData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/CollectionRowData.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/MapRowData.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/MapRowData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/MapRowData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/MapRowData.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/RowData.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/RowData.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/RowData.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/RowData.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/WriteBasicParameter.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteBasicParameter.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/WriteBasicParameter.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteBasicParameter.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/WriteSheet.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteSheet.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/WriteSheet.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteSheet.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/WriteTable.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteTable.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/WriteTable.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteTable.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/WriteWorkbook.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteWorkbook.java
similarity index 97%
rename from src/main/java/com/alibaba/excel/write/metadata/WriteWorkbook.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteWorkbook.java
index 38b368ec..16f2a7ca 100644
--- a/src/main/java/com/alibaba/excel/write/metadata/WriteWorkbook.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/WriteWorkbook.java
@@ -37,7 +37,8 @@ public class WriteWorkbook extends WriteBasicParameter {
*/
private OutputStream outputStream;
/**
- * output charset
+ * charset.
+ * Only work on the CSV file
*/
private Charset charset;
/**
diff --git a/src/main/java/com/alibaba/excel/write/metadata/fill/AnalysisCell.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/fill/AnalysisCell.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/fill/AnalysisCell.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/fill/AnalysisCell.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/fill/FillConfig.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/fill/FillConfig.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/fill/FillConfig.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/fill/FillConfig.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/fill/FillWrapper.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/fill/FillWrapper.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/fill/FillWrapper.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/fill/FillWrapper.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/holder/WriteHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/holder/WriteHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteHolder.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/holder/WriteSheetHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteSheetHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/holder/WriteSheetHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteSheetHolder.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/holder/WriteTableHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteTableHolder.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/holder/WriteTableHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteTableHolder.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
similarity index 99%
rename from src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
index ec8e3349..e64b8e38 100644
--- a/src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
@@ -80,7 +80,8 @@ public class WriteWorkbookHolder extends AbstractWriteHolder {
*/
private OutputStream outputStream;
/**
- * output charset
+ * charset.
+ * Only work on the CSV file
*/
private Charset charset;
/**
diff --git a/src/main/java/com/alibaba/excel/write/metadata/style/WriteCellStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/style/WriteCellStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/style/WriteCellStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/style/WriteCellStyle.java
diff --git a/src/main/java/com/alibaba/excel/write/metadata/style/WriteFont.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/style/WriteFont.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/metadata/style/WriteFont.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/metadata/style/WriteFont.java
diff --git a/src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java
diff --git a/src/main/java/com/alibaba/excel/write/style/AbstractCellStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/AbstractCellStyleStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/AbstractCellStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/AbstractCellStyleStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/style/AbstractVerticalCellStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/AbstractVerticalCellStyleStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/AbstractVerticalCellStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/AbstractVerticalCellStyleStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/style/DefaultStyle.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/DefaultStyle.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/DefaultStyle.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/DefaultStyle.java
diff --git a/src/main/java/com/alibaba/excel/write/style/HorizontalCellStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/HorizontalCellStyleStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/HorizontalCellStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/HorizontalCellStyleStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/style/column/AbstractColumnWidthStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/AbstractColumnWidthStyleStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/column/AbstractColumnWidthStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/AbstractColumnWidthStyleStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/style/column/LongestMatchColumnWidthStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/LongestMatchColumnWidthStyleStrategy.java
similarity index 90%
rename from src/main/java/com/alibaba/excel/write/style/column/LongestMatchColumnWidthStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/LongestMatchColumnWidthStyleStrategy.java
index d248de13..ee47fbfb 100644
--- a/src/main/java/com/alibaba/excel/write/style/column/LongestMatchColumnWidthStyleStrategy.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/LongestMatchColumnWidthStyleStrategy.java
@@ -35,11 +35,7 @@ public class LongestMatchColumnWidthStyleStrategy extends AbstractColumnWidthSty
if (!needSetWidth) {
return;
}
- Map maxColumnWidthMap = cache.get(writeSheetHolder.getSheetNo());
- if (maxColumnWidthMap == null) {
- maxColumnWidthMap = new HashMap(16);
- cache.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);
- }
+ Map maxColumnWidthMap = cache.computeIfAbsent(writeSheetHolder.getSheetNo(), key -> new HashMap<>(16));
Integer columnWidth = dataLength(cellDataList, cell, isHead);
if (columnWidth < 0) {
return;
diff --git a/src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
similarity index 93%
rename from src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
index 316ff2c8..5db857d5 100644
--- a/src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
@@ -8,7 +8,7 @@ import com.alibaba.excel.metadata.Head;
* @author Jiaju Zhuang
*/
public class SimpleColumnWidthStyleStrategy extends AbstractHeadColumnWidthStyleStrategy {
- private Integer columnWidth;
+ private final Integer columnWidth;
/**
*
diff --git a/src/main/java/com/alibaba/excel/write/style/row/AbstractRowHeightStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/row/AbstractRowHeightStyleStrategy.java
similarity index 100%
rename from src/main/java/com/alibaba/excel/write/style/row/AbstractRowHeightStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/row/AbstractRowHeightStyleStrategy.java
diff --git a/src/main/java/com/alibaba/excel/write/style/row/SimpleRowHeightStyleStrategy.java b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/row/SimpleRowHeightStyleStrategy.java
similarity index 91%
rename from src/main/java/com/alibaba/excel/write/style/row/SimpleRowHeightStyleStrategy.java
rename to easyexcel-core/src/main/java/com/alibaba/excel/write/style/row/SimpleRowHeightStyleStrategy.java
index 313cf21c..028707f3 100644
--- a/src/main/java/com/alibaba/excel/write/style/row/SimpleRowHeightStyleStrategy.java
+++ b/easyexcel-core/src/main/java/com/alibaba/excel/write/style/row/SimpleRowHeightStyleStrategy.java
@@ -8,8 +8,8 @@ import org.apache.poi.ss.usermodel.Row;
* @author Jiaju Zhuang
*/
public class SimpleRowHeightStyleStrategy extends AbstractRowHeightStyleStrategy {
- private Short headRowHeight;
- private Short contentRowHeight;
+ private final Short headRowHeight;
+ private final Short contentRowHeight;
public SimpleRowHeightStyleStrategy(Short headRowHeight, Short contentRowHeight) {
this.headRowHeight = headRowHeight;
diff --git a/src/main/java/org/apache/poi/hssf/usermodel/PoiUtils.java b/easyexcel-core/src/main/java/org/apache/poi/hssf/usermodel/PoiUtils.java
similarity index 100%
rename from src/main/java/org/apache/poi/hssf/usermodel/PoiUtils.java
rename to easyexcel-core/src/main/java/org/apache/poi/hssf/usermodel/PoiUtils.java
diff --git a/easyexcel-support/README.md b/easyexcel-support/README.md
new file mode 100644
index 00000000..580f05d0
--- /dev/null
+++ b/easyexcel-support/README.md
@@ -0,0 +1,3 @@
+# easyexcel-support
+
+外部依赖的代码,目前就一个cglib,由于cglib不支持jdk高版本,所以单独复制了一份
\ No newline at end of file
diff --git a/easyexcel-support/pom.xml b/easyexcel-support/pom.xml
new file mode 100644
index 00000000..d15b0d7a
--- /dev/null
+++ b/easyexcel-support/pom.xml
@@ -0,0 +1,90 @@
+
+
+ 4.0.0
+
+
+ com.alibaba
+ easyexcel-parent
+ ${revision}
+ ../pom.xml
+
+
+ jar
+ easyexcel-support
+
+
+
+ org.springframework
+ spring-core
+
+
+ org.springframework
+ spring-jcl
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+ true
+ false
+ true
+
+ true
+
+
+ org.springframework:spring-core
+
+
+
+
+ org.springframework:spring-core
+
+ org/springframework/asm/**
+ org/springframework/cglib/**
+
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+
+
+ flatten.process-resources
+ process-resources
+
+ flatten
+
+
+
+ flatten
+ package
+
+ flatten
+
+
+
+
+
+
+
+
diff --git a/easyexcel-support/src/main/java/com/alibaba/excel/support/Empty.java b/easyexcel-support/src/main/java/com/alibaba/excel/support/Empty.java
new file mode 100644
index 00000000..82d9b080
--- /dev/null
+++ b/easyexcel-support/src/main/java/com/alibaba/excel/support/Empty.java
@@ -0,0 +1,9 @@
+package com.alibaba.excel.support;
+
+/**
+ * empty
+ *
+ * @author Jiaju Zhuang
+ */
+public class Empty {
+}
diff --git a/easyexcel-test/README.md b/easyexcel-test/README.md
new file mode 100644
index 00000000..299588a0
--- /dev/null
+++ b/easyexcel-test/README.md
@@ -0,0 +1,3 @@
+# easyexcel-test
+
+测试案例
\ No newline at end of file
diff --git a/easyexcel-test/pom.xml b/easyexcel-test/pom.xml
new file mode 100644
index 00000000..f802f249
--- /dev/null
+++ b/easyexcel-test/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ com.alibaba
+ easyexcel-parent
+ ${revision}
+ ../pom.xml
+
+
+ jar
+ easyexcel-test
+
+
+ true
+
+
+
+
+ com.alibaba
+ easyexcel-core
+ test
+
+
+ ch.qos.logback
+ logback-classic
+ test
+
+
+ com.alibaba
+ fastjson
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ test
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ /com/alibaba/easyexcel/test/demo/**/*.java
+ /com/alibaba/easyexcel/test/temp/**/*.java
+ /com/alibaba/easyexcel/test/util/**/*.java
+
+ true
+
+
+
+
+
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/StyleTestUtils.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/StyleTestUtils.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/StyleTestUtils.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/StyleTestUtils.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationData.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationData.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationData.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationData.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataListener.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataListener.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataListener.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataListener.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataTest.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataTest.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataTest.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationDataTest.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameData.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameData.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameData.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameData.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataListener.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataListener.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataListener.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataListener.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataTest.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataTest.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataTest.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationIndexAndNameDataTest.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationStyleData.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationStyleData.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationStyleData.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationStyleData.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataListener.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataListener.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataListener.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataListener.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataTest.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataTest.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataTest.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataDataTest.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataReadData.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataReadData.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataReadData.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataReadData.java
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataWriteData.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataWriteData.java
similarity index 100%
rename from src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataWriteData.java
rename to easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/celldata/CellDataWriteData.java
diff --git a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/charset/CharsetData.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/charset/CharsetData.java
new file mode 100644
index 00000000..234ec484
--- /dev/null
+++ b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/charset/CharsetData.java
@@ -0,0 +1,17 @@
+package com.alibaba.easyexcel.test.core.charset;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@EqualsAndHashCode
+public class CharsetData {
+ @ExcelProperty("姓名")
+ private String name;
+ @ExcelProperty("年纪")
+ private Integer age;
+}
diff --git a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/charset/CharsetDataTest.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/charset/CharsetDataTest.java
new file mode 100644
index 00000000..7ac39173
--- /dev/null
+++ b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/charset/CharsetDataTest.java
@@ -0,0 +1,110 @@
+package com.alibaba.easyexcel.test.core.charset;
+
+import java.io.File;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.easyexcel.test.util.TestFileUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.read.listener.ReadListener;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.utils.Lists;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+/**
+ * charset
+ *
+ * @author Jiaju Zhuang
+ */
+@Slf4j
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class CharsetDataTest {
+ private static final Charset GBK = Charset.forName("GBK");
+ private static File fileCsvGbk;
+ private static File fileCsvUtf8;
+ private static File fileCsvError;
+
+ @BeforeClass
+ public static void init() {
+ fileCsvGbk = TestFileUtil.createNewFile("charset" + File.separator + "fileCsvGbk.csv");
+ fileCsvUtf8 = TestFileUtil.createNewFile("charset" + File.separator + "fileCsvUtf8.csv");
+ fileCsvError = TestFileUtil.createNewFile("charset" + File.separator + "fileCsvError.csv");
+ }
+
+ @Test
+ public void t01ReadAndWriteCsv() {
+ readAndWrite(fileCsvGbk, GBK);
+ readAndWrite(fileCsvUtf8, StandardCharsets.UTF_8);
+ }
+
+ @Test
+ public void t02ReadAndWriteCsvError() {
+ EasyExcel.write(fileCsvError, CharsetData.class).charset(GBK).sheet().doWrite(data());
+ EasyExcel.read(fileCsvError, CharsetData.class, new ReadListener() {
+
+ private final List dataList = Lists.newArrayList();
+
+ @Override
+ public void invokeHead(Map> headMap, AnalysisContext context) {
+ String head = headMap.get(0).getStringValue();
+ Assert.assertNotEquals("姓名", head);
+ }
+
+ @Override
+ public void invoke(CharsetData data, AnalysisContext context) {
+ dataList.add(data);
+ }
+
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ }
+ }).charset(StandardCharsets.UTF_8).sheet().doRead();
+ }
+
+ private void readAndWrite(File file, Charset charset) {
+ EasyExcel.write(file, CharsetData.class).charset(charset).sheet().doWrite(data());
+ EasyExcel.read(file, CharsetData.class, new ReadListener() {
+
+ private final List dataList = Lists.newArrayList();
+
+ @Override
+ public void invokeHead(Map> headMap, AnalysisContext context) {
+ String head = headMap.get(0).getStringValue();
+ Assert.assertEquals("姓名", head);
+ }
+
+ @Override
+ public void invoke(CharsetData data, AnalysisContext context) {
+ dataList.add(data);
+ }
+
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ Assert.assertEquals(dataList.size(), 10);
+ CharsetData charsetData = dataList.get(0);
+ Assert.assertEquals("姓名0", charsetData.getName());
+ Assert.assertEquals(0, (long)charsetData.getAge());
+ }
+ }).charset(charset).sheet().doRead();
+ }
+
+ private List data() {
+ List list = Lists.newArrayList();
+ for (int i = 0; i < 10; i++) {
+ CharsetData data = new CharsetData();
+ data.setName("姓名" + i);
+ data.setAge(i);
+ list.add(data);
+ }
+ return list;
+ }
+}
diff --git a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityTest.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityTest.java
new file mode 100644
index 00000000..027aa54f
--- /dev/null
+++ b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityTest.java
@@ -0,0 +1,33 @@
+package com.alibaba.easyexcel.test.core.compatibility;
+
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.easyexcel.test.util.TestFileUtil;
+import com.alibaba.excel.EasyExcel;
+
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+/**
+ * Compatible with some special files
+ *
+ * @author Jiaju Zhuang
+ */
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+@Slf4j
+public class CompatibilityTest {
+
+ @Test
+ public void t01() {
+ // https://github.com/alibaba/easyexcel/issues/2236
+ List