1、Excel优化

Former-commit-id: 079402c892157c8da8334bbcb587263638c72a61
master
wangbing 5 years ago
parent a0baf67677
commit fffcdcf9b6

@ -100,7 +100,7 @@ public class WExcel<T> implements Serializable, Cloneable {
/**
*
*/
private List<${basePackage}.frame.excel.WColumn> columnList = new ArrayList<>();
private List<WColumn> columnList = new ArrayList<>();
/**
*
@ -120,7 +120,7 @@ public class WExcel<T> implements Serializable, Cloneable {
*
* @return WColumn
*/
private List<${basePackage}.frame.excel.WColumn> initColumns(Class<?> clazz) {
private List<WColumn> initColumns(Class<?> clazz) {
//获取工作簿名称,没有则以类名为默认工作簿名称
if (clazz.isAnnotationPresent(SheetName.class)) {
SheetName sheetName = clazz.getAnnotation(SheetName.class);
@ -138,7 +138,7 @@ public class WExcel<T> implements Serializable, Cloneable {
continue;
}
${basePackage}.frame.excel.WColumn WColumn = new ${basePackage}.frame.excel.WColumn();
WColumn WColumn = new WColumn();
WColumn.setField(field);
Method set = ClassUtil.setMethod(field.getName(), clazz, field.getType());
@ -161,7 +161,7 @@ public class WExcel<T> implements Serializable, Cloneable {
WColumn.setDescription(field.getAnnotation(ColumnDescription.class).value());
}
//获取下拉列表
if (field.isAnnotationPresent(${basePackage}.frame.excel.annotation.ColumnList.class)) {
if (field.isAnnotationPresent(ColumnList.class)) {
WColumn.setCellList(field.getAnnotation(ColumnList.class).value());
}
@ -229,7 +229,7 @@ public class WExcel<T> implements Serializable, Cloneable {
if (list.size() > 0) {
for (T t : list) {
WRow row = new WRow();
for (${basePackage}.frame.excel.WColumn column : columnList) {
for (WColumn column : columnList) {
if (column == null) {
continue;
}
@ -261,6 +261,14 @@ public class WExcel<T> implements Serializable, Cloneable {
return this;
}
public WExcel loadData(File file) throws TemplateNotMatchException, ReadErrorException, IOException {
return loadData(FileUtil.readFileToByteArray(file), null);
}
public WExcel loadData(File file, Processor<T> processor) throws TemplateNotMatchException, ReadErrorException, IOException {
return loadData(FileUtil.readFileToByteArray(file), processor);
}
public WExcel loadData(byte[] bytes) throws TemplateNotMatchException, ReadErrorException {
return loadData(bytes, null);
}
@ -672,29 +680,4 @@ public class WExcel<T> implements Serializable, Cloneable {
fileOutputStream.write(getBytes());
fileOutputStream.close();
}
public static void main(String[] args) throws IOException {
Dept dept = new Dept();
dept.setDeptName("AAAAAA");
ArrayList<Dept> depts = new ArrayList<Dept>();
depts.add(dept);
File file = new File("E:\\E.xlsx");
// 导出模板
// new WExcel<Dept>(Dept.class).loadData(depts).toFile(file);
// 检查excel文件是否符合导入
byte[] bytes = FileUtil.readFileToByteArray(new File("E:\\E.xlsx"));
try {
WExcel check = new WExcel<Dept>(Dept.class).loadData(bytes);
check.toFile(new File("E:\\E_err.xlsx"));
System.out.println(check.hasError());
} catch (TemplateNotMatchException e) {
e.printStackTrace();
} catch (ReadErrorException e) {
e.printStackTrace();
}
System.out.println();
}
}

@ -2,6 +2,7 @@ package ${basePackage}.module.system.ent;
import ${basePackage}.frame.excel.annotation.ColumnDescription;
import ${basePackage}.frame.excel.annotation.ColumnName;
import ${basePackage}.frame.excel.annotation.ColumnList;
import ${basePackage}.frame.excel.annotation.SheetName;
import ${basePackage}.frame.base.BaseEntity;
@ -50,6 +51,7 @@ public class Dept extends BaseEntity {
*/
@ColumnName("是否有效")
@ColumnDescription("")
@ColumnList({"是", "否"})
private Boolean valid;
public String getDeptCode() {

@ -12,6 +12,7 @@ import ${basePackage}.frame.utils.IDgenerator;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.utils.Message;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.module.system.ent.LogErr;
import ${basePackage}.module.system.mpr.LogErrMapper;
import ${basePackage}.module.system.req.LogErrCreateRequest;
import ${basePackage}.module.system.req.LogErrDeleteRequest;
@ -54,7 +55,7 @@ public class LogErrManagerImpl implements ${basePackage}.module.system.mgr.LogEr
}
long id = IDgenerator.nextId();
${basePackage}.module.system.ent.LogErr entity = MapperUtil.map(request, ${basePackage}.module.system.ent.LogErr.class);
LogErr entity = MapperUtil.map(request, LogErr.class);
entity.setId(id);
long result = logErrMapper.insert(entity, token);
@ -139,7 +140,7 @@ public class LogErrManagerImpl implements ${basePackage}.module.system.mgr.LogEr
if (StringUtil.isNotEmpty(request.getSortKey())) {
PageHelper.orderBy(request.getSortKey() + " " + request.getSortType());
}
PageInfo<${basePackage}.module.system.ent.LogErr> pageInfo = new PageInfo<>(logErrMapper.find(request, token));
PageInfo<LogErr> pageInfo = new PageInfo<>(logErrMapper.find(request, token));
response.setResult(pageInfo.getList());
response.setTotalCount(pageInfo.getTotal());
@ -163,7 +164,7 @@ public class LogErrManagerImpl implements ${basePackage}.module.system.mgr.LogEr
return response;
}
${basePackage}.module.system.ent.LogErr po = logErrMapper.get(request, token);
LogErr po = logErrMapper.get(request, token);
if (po != null) {
response.setLogErr(po);

@ -3,6 +3,7 @@ package ${basePackage}.module.system.mpr;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import ${basePackage}.frame.auth.Token;
import ${basePackage}.module.system.ent.LogErr;
import ${basePackage}.module.system.req.LogErrDeleteRequest;
import ${basePackage}.module.system.req.LogErrFindRequest;
import ${basePackage}.module.system.req.LogErrGetRequest;
@ -26,7 +27,7 @@ public interface LogErrMapper {
* @param token
* @return
*/
long insert(@Param("request") ${basePackage}.module.system.ent.LogErr request, @Param("token") Token token);
long insert(@Param("request") LogErr request, @Param("token") Token token);
/**
*
@ -35,7 +36,7 @@ public interface LogErrMapper {
* @param token
* @return
*/
long insertBatch(@Param("list") List<${basePackage}.module.system.ent.LogErr> request, @Param("token") Token token);
long insertBatch(@Param("list") List<LogErr> request, @Param("token") Token token);
/**
*
@ -62,7 +63,7 @@ public interface LogErrMapper {
* @param token
* @return
*/
List<${basePackage}.module.system.ent.LogErr> find(@Param("request") LogErrFindRequest request, @Param("token") Token token);
List<LogErr> find(@Param("request") LogErrFindRequest request, @Param("token") Token token);
/**
*
@ -71,5 +72,5 @@ public interface LogErrMapper {
* @param token
* @return
*/
${basePackage}.module.system.ent.LogErr get(@Param("request") LogErrGetRequest request, @Param("token") Token token);
LogErr get(@Param("request") LogErrGetRequest request, @Param("token") Token token);
}

@ -1,6 +1,7 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.frame.base.BaseFindResponse;
import ${basePackage}.module.system.ent.LogErr;
/**
* LogErrFindResponse -
@ -9,5 +10,5 @@ import ${basePackage}.frame.base.BaseFindResponse;
* @version 0.0.1
* @since 2017-01-01
*/
public class LogErrFindResponse extends BaseFindResponse<${basePackage}.module.system.ent.LogErr> {
public class LogErrFindResponse extends BaseFindResponse<LogErr> {
}

@ -1,11 +1,28 @@
package ${basePackage};
import ${basePackage}.frame.utils.*;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import ${basePackage}.frame.excel.WExcel;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.frame.utils.AESUtil;
import ${basePackage}.frame.utils.Base64Util;
import ${basePackage}.frame.utils.IDgenerator;
import ${basePackage}.frame.utils.MD5Util;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.utils.ProcessUtil;
import ${basePackage}.frame.utils.RSAUtil;
import ${basePackage}.module.system.ent.Dept;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* UtilTest - -
@ -91,4 +108,49 @@ public class UtilTest {
boolean b = RSAUtil.doCheck("我有一个苹果".getBytes(), sign);
System.out.println(b);
}
@Test
public void testExcel() {
// 准备导出数据
Dept dept = new Dept();
dept.setDeptCode("A000101");
dept.setDeptName("人事部");
dept.setDeptAlias("人事部");
dept.setSupCode("A0001");
dept.setSupName("董事会");
dept.setValid(true);
ArrayList<Dept> depts = new ArrayList<Dept>();
depts.add(dept);
// 设置文件地址及导出
try {
File file = new File("E:\\E.xlsx");
new WExcel<Dept>(Dept.class).loadData(depts).toFile(file);
} catch (IOException e) {
e.printStackTrace();
}
// 导入数据
try {
File file = new File("E:\\E.xlsx");
WExcel.Processor<Dept> processor = new WExcel.Processor<Dept>() {
@Override
public List<String> exec(Dept o) {
System.out.println("从Excel中读取对象:" + MapperUtil.toJson(o));
return Arrays.asList("模拟处理对象业务时出现的错误信息1","模拟处理对象业务时出现的错误信息2");
}
};
WExcel check = new WExcel<Dept>(Dept.class).loadData(file, processor);
if (check.hasError()) {
System.out.println("导入或处理有错误.");
check.toFile(new File("E:\\E_err.xlsx"));
}
} catch (TemplateNotMatchException e) {
Assert.assertTrue("导入文件与模板不匹配,请重新下载模板!", false);
} catch (ReadErrorException e) {
Assert.assertTrue("导入文件错误,请检查格式或文件是否被破坏!", false);
} catch (IOException e) {
Assert.assertTrue("读取错误!", false);
}
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.