升级easyExcel

master
toesbieya 6 years ago
parent 18685d8c38
commit 72686eeb79
  1. 25
      java/pom.xml
  2. 20
      java/src/main/java/com/toesbieya/my/utils/ExcelUtil.java

@ -30,10 +30,7 @@
<qiniu.version>[7.2.0, 7.2.99]</qiniu.version> <qiniu.version>[7.2.0, 7.2.99]</qiniu.version>
<!--三方工具--> <!--三方工具-->
<easyexcel.version>2.1.6</easyexcel.version> <easyexcel.version>2.2.5</easyexcel.version>
<poi.version>4.1.1</poi.version>
<ehcache.version>3.8.1</ehcache.version>
<cglib.version>3.3.0</cglib.version>
</properties> </properties>
<dependencies> <dependencies>
@ -136,26 +133,6 @@
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version> <version>${easyexcel.version}</version>
</dependency> </dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>${cglib.version}</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

@ -31,7 +31,10 @@ public class ExcelUtil {
defaultCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); defaultCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
} }
public static void exportSimply(List list, HttpServletResponse response, String filename) throws Exception { public static void exportSimply(
List list,
HttpServletResponse response,
String filename) throws Exception {
export(list, response, filename, null, null); export(list, response, filename, null, null);
} }
@ -65,7 +68,9 @@ public class ExcelUtil {
response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.ms-excel");
ExcelWriterBuilder builder = EasyExcel.write(response.getOutputStream(), list.get(0).getClass()); Class clazz = list.get(0).getClass();
ExcelWriterBuilder builder = EasyExcel.write(response.getOutputStream(), clazz);
builder.registerWriteHandler(getDefaultStyle()); builder.registerWriteHandler(getDefaultStyle());
@ -73,7 +78,7 @@ public class ExcelUtil {
builder.needHead(false).withTemplate(EXCEL_TEMPLATE_DIR + template + ".xlsx"); builder.needHead(false).withTemplate(EXCEL_TEMPLATE_DIR + template + ".xlsx");
} }
if (mergeOptions != null) { if (mergeOptions != null) {
CommonMerge commonMerge = new CommonMerge(list, mergeOptions); CommonMerge commonMerge = new CommonMerge(list, clazz, mergeOptions);
builder.registerWriteHandler(commonMerge); builder.registerWriteHandler(commonMerge);
} }
@ -111,18 +116,17 @@ public class ExcelUtil {
private final int[][] merge; private final int[][] merge;
private final int[] temp; private final int[] temp;
public CommonMerge(List data, CommonMergeOptions mergeOptions) throws Exception { public CommonMerge(List data, Class clazz, CommonMergeOptions mergeOptions) throws Exception {
String[] attrs = mergeOptions.getAttrs(); String[] attrs = mergeOptions.getAttrs();
String primaryKey = mergeOptions.getPrimaryKey(); String primaryKey = mergeOptions.getPrimaryKey();
String orderKey = mergeOptions.getOrderKey(); String orderKey = mergeOptions.getOrderKey();
int length = data.size(); int length = data.size();
this.attrs = new Field[attrs.length]; this.attrs = new Field[attrs.length];
Class t = data.get(0).getClass();
this.merge = new int[attrs.length][]; this.merge = new int[attrs.length][];
for (int i = 0; i < attrs.length; i++) { for (int i = 0; i < attrs.length; i++) {
if (StringUtils.isEmpty(attrs[i])) continue; if (StringUtils.isEmpty(attrs[i])) continue;
Field field = t.getDeclaredField(attrs[i]); Field field = clazz.getDeclaredField(attrs[i]);
field.setAccessible(true); field.setAccessible(true);
//获取easyExcel的注解,根据值来确定字段在excel中的位置 //获取easyExcel的注解,根据值来确定字段在excel中的位置
@ -138,10 +142,10 @@ public class ExcelUtil {
a[0] = 1; a[0] = 1;
this.merge[i] = a; this.merge[i] = a;
} }
Field primaryField = t.getDeclaredField(primaryKey); Field primaryField = clazz.getDeclaredField(primaryKey);
primaryField.setAccessible(true); primaryField.setAccessible(true);
this.primaryField = primaryField; this.primaryField = primaryField;
Field orderField = t.getDeclaredField(orderKey); Field orderField = clazz.getDeclaredField(orderKey);
orderField.setAccessible(true); orderField.setAccessible(true);
this.temp = new int[attrs.length]; this.temp = new int[attrs.length];
Arrays.fill(this.temp, 1); Arrays.fill(this.temp, 1);

Loading…
Cancel
Save