Java导出excel基于注解
2017-12-01 20:33
393 查看
js中的方法:
// 导出日志
exportLog:function(e){
debugger
fly.top.fly.dialog({
title: '导出',
content: '是否导出?',
width: '240px',
padding: '30px 20px',
okValue: '确认',
cancelValue: '取消',
ok: function() {
util.mask('文件正在导出...');
window.location.href=CONTEXTPATH + '/originalhitch/exportLog.do?hitchId=' + id;
util.removeMask()
},
cancel: true
});
},
控制层,我是因为根据id来查询数据的
@RequestMapping(value = "/exportLog.do", produces = "application/json;charset=UTF-8")
@ResponseBody
public String exportLog(HttpServletRequest request,HttpServletResponse response, String hitchId) {
try {
String filepath=request.getRealPath("/")+"upload/";
String
path= originalHitchService.exportItem(hitchId,filepath);
String name="原文挂接详情";
String sux="";
if(path.contains(".")){
sux=path.substring(path.lastIndexOf("."),path.length());
}
OutputStream out = response.getOutputStream();
byte[] fileData = FileUtils.fileToBytes(path);
String filename = new String(
URLEncoder.encode(name+sux, "UTF-8")
.getBytes("UTF-8"),
"ISO8859-1");
response.setHeader("content-disposition", "attachment;filename=" + filename);
// 写明要下载的文件的大小
response.setContentLength(fileData.length);
out.write(fileData);
out.flush();
out.close();
} catch (Exception e) {
logger.error("导出日志异常:" + e.getMessage(), e);
return JSONUtil.error();
}
return JSONUtil.success();
}
实现层方法:
@Override
public String exportItem(String hitchId,String filepath) throws Exception {
List<HsdaOriginalHitchDetail> originalHitchDetails =originalHitchDetailDao.queryListByHitchId(hitchId);
HitchLogExcel hitchLogExcel;
String path;
List<HitchLogExcel> list = new ArrayList<>();
for (HsdaOriginalHitchDetail originalHitchDetail : originalHitchDetails) {
hitchLogExcel = new HitchLogExcel();
hitchLogExcel.setFileNum(StringUtil.isNotEmpty(originalHitchDetail.getFileNum()) ? originalHitchDetail.getFileNum() : "");
hitchLogExcel.setRecordTitle(StringUtil.isNotEmpty(originalHitchDetail.getRecordTitle()) ?originalHitchDetail.getRecordTitle() : "");
hitchLogExcel.setRecordPageNum(StringUtil.isNotEmpty(originalHitchDetail.getRecordNum()) ?originalHitchDetail.getRecordNum() : "");
hitchLogExcel.setOriginalNum(StringUtil.isNotEmpty(originalHitchDetail.getOriginalNum()) ?originalHitchDetail.getOriginalNum() : "");
if (StringUtil.isNotEmpty(originalHitchDetail.getMatchStatus())) {
hitchLogExcel.setMatchStatus(PublicZdCacheLoadImpl.getDictMc("PPZT", originalHitchDetail.getMatchStatus(), false));
} else {
hitchLogExcel.setMatchStatus("");
}
if (StringUtil.isNotEmpty(originalHitchDetail.getHitchStatus())) {
hitchLogExcel.setHitchStatus(PublicZdCacheLoadImpl.getDictMc("GJZT", originalHitchDetail.getHitchStatus(), false));
} else {
hitchLogExcel.setHitchStatus("");
}
if (StringUtil.isNotEmpty(originalHitchDetail.getCheckoutResult())) {
hitchLogExcel.setCheckoutResult(PublicZdCacheLoadImpl.getDictMc("YZXJY", originalHitchDetail.getCheckoutResult(), false));
} else {
hitchLogExcel.setCheckoutResult("");
}
list.add(hitchLogExcel);
}
try {
path=filepath+"/"+ ComDateUtils.getDate() + TokenUtils.getRandom() + ".xlsx";
ExcelUtil.writeToFile(list, null, path);
} catch (Exception e) {
e.printStackTrace();
return "";
}
return path;
}
需要转换的excel对象:
public class HitchLogExcel {
/**
*档号
*/
@Excel(name = "档号", width = 20,length = 50)
private String fileNum;
/**
*著录题名
*/
@Excel(name = "著录题名", width = 20,length = 50)
private String recordTitle;
/**
*著录页数
*/
@Excel(name = "著录页数", width = 20,length = 50)
private String recordPageNum;
/**
* 文件页数
*/
@Excel(name = "文件页数", width = 20,length = 50)
private String originalNum;
/**
*匹配状态
*/
@Excel(name = "匹配状态", width = 20,length = 50)
private String matchStatus;
/**
* 挂接状态
*/
@Excel(name = "挂接状态", width = 20,length = 50)
private String hitchStatus;
/**
* 一致性检验
*/
@Excel(name = "一致性检验", width = 20,length = 50)
private String checkoutResult;
getter/setter方法。。。。
}
Excel注解,用以生成Excel表格文件
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.TYPE})
public @interface Excel {
//列名
String name() default "";
//宽度
int width() default 20;
//忽略该字段
boolean skip() default false;
//字符长度
int length() default 100;
//是否必填
boolean must() default false;
//是否是日期
boolean date() default false;
}
// 导出日志
exportLog:function(e){
debugger
fly.top.fly.dialog({
title: '导出',
content: '是否导出?',
width: '240px',
padding: '30px 20px',
okValue: '确认',
cancelValue: '取消',
ok: function() {
util.mask('文件正在导出...');
window.location.href=CONTEXTPATH + '/originalhitch/exportLog.do?hitchId=' + id;
util.removeMask()
},
cancel: true
});
},
控制层,我是因为根据id来查询数据的
@RequestMapping(value = "/exportLog.do", produces = "application/json;charset=UTF-8")
@ResponseBody
public String exportLog(HttpServletRequest request,HttpServletResponse response, String hitchId) {
try {
String filepath=request.getRealPath("/")+"upload/";
String
path= originalHitchService.exportItem(hitchId,filepath);
String name="原文挂接详情";
String sux="";
if(path.contains(".")){
sux=path.substring(path.lastIndexOf("."),path.length());
}
OutputStream out = response.getOutputStream();
byte[] fileData = FileUtils.fileToBytes(path);
String filename = new String(
URLEncoder.encode(name+sux, "UTF-8")
.getBytes("UTF-8"),
"ISO8859-1");
response.setHeader("content-disposition", "attachment;filename=" + filename);
// 写明要下载的文件的大小
response.setContentLength(fileData.length);
out.write(fileData);
out.flush();
out.close();
} catch (Exception e) {
logger.error("导出日志异常:" + e.getMessage(), e);
return JSONUtil.error();
}
return JSONUtil.success();
}
实现层方法:
@Override
public String exportItem(String hitchId,String filepath) throws Exception {
List<HsdaOriginalHitchDetail> originalHitchDetails =originalHitchDetailDao.queryListByHitchId(hitchId);
HitchLogExcel hitchLogExcel;
String path;
List<HitchLogExcel> list = new ArrayList<>();
for (HsdaOriginalHitchDetail originalHitchDetail : originalHitchDetails) {
hitchLogExcel = new HitchLogExcel();
hitchLogExcel.setFileNum(StringUtil.isNotEmpty(originalHitchDetail.getFileNum()) ? originalHitchDetail.getFileNum() : "");
hitchLogExcel.setRecordTitle(StringUtil.isNotEmpty(originalHitchDetail.getRecordTitle()) ?originalHitchDetail.getRecordTitle() : "");
hitchLogExcel.setRecordPageNum(StringUtil.isNotEmpty(originalHitchDetail.getRecordNum()) ?originalHitchDetail.getRecordNum() : "");
hitchLogExcel.setOriginalNum(StringUtil.isNotEmpty(originalHitchDetail.getOriginalNum()) ?originalHitchDetail.getOriginalNum() : "");
if (StringUtil.isNotEmpty(originalHitchDetail.getMatchStatus())) {
hitchLogExcel.setMatchStatus(PublicZdCacheLoadImpl.getDictMc("PPZT", originalHitchDetail.getMatchStatus(), false));
} else {
hitchLogExcel.setMatchStatus("");
}
if (StringUtil.isNotEmpty(originalHitchDetail.getHitchStatus())) {
hitchLogExcel.setHitchStatus(PublicZdCacheLoadImpl.getDictMc("GJZT", originalHitchDetail.getHitchStatus(), false));
} else {
hitchLogExcel.setHitchStatus("");
}
if (StringUtil.isNotEmpty(originalHitchDetail.getCheckoutResult())) {
hitchLogExcel.setCheckoutResult(PublicZdCacheLoadImpl.getDictMc("YZXJY", originalHitchDetail.getCheckoutResult(), false));
} else {
hitchLogExcel.setCheckoutResult("");
}
list.add(hitchLogExcel);
}
try {
path=filepath+"/"+ ComDateUtils.getDate() + TokenUtils.getRandom() + ".xlsx";
ExcelUtil.writeToFile(list, null, path);
} catch (Exception e) {
e.printStackTrace();
return "";
}
return path;
}
需要转换的excel对象:
public class HitchLogExcel {
/**
*档号
*/
@Excel(name = "档号", width = 20,length = 50)
private String fileNum;
/**
*著录题名
*/
@Excel(name = "著录题名", width = 20,length = 50)
private String recordTitle;
/**
*著录页数
*/
@Excel(name = "著录页数", width = 20,length = 50)
private String recordPageNum;
/**
* 文件页数
*/
@Excel(name = "文件页数", width = 20,length = 50)
private String originalNum;
/**
*匹配状态
*/
@Excel(name = "匹配状态", width = 20,length = 50)
private String matchStatus;
/**
* 挂接状态
*/
@Excel(name = "挂接状态", width = 20,length = 50)
private String hitchStatus;
/**
* 一致性检验
*/
@Excel(name = "一致性检验", width = 20,length = 50)
private String checkoutResult;
getter/setter方法。。。。
}
Excel注解,用以生成Excel表格文件
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.TYPE})
public @interface Excel {
//列名
String name() default "";
//宽度
int width() default 20;
//忽略该字段
boolean skip() default false;
//字符长度
int length() default 100;
//是否必填
boolean must() default false;
//是否是日期
boolean date() default false;
}
相关文章推荐
- Java-Maven-POI 简单导入导出Excel通用工具,默认使用基于poi实现
- java自定义注解在excel导出时的使用
- 基于注解的Excel 导入导出
- java Excel导入导出,基于XML的实现,easy-excel使用
- java基于jxl 导出excel例子
- JAVA语言工具类封装-基于poi的excel导出功能
- Java SSM注解实现POI导入导出Excel
- 归纳几种基于java应用的excel导出方案
- java Excel导入导出,基于XML的实现,easy-excel使用
- java基于poi模板excel导出
- JAVA语言工具类封装-基于poi的excel导出功能
- Excel数据导出,Java自定义注解
- java基于反射机制动态导出excel
- 注解方式 java导出Excel
- java Excel导入导出,基于XML的实现,easy-excel使用
- Java SSM注解实现POI导入导出Excel
- Java注解应用于Excel导出
- Java Excel导入导出,基于XML和Easy-excel使用
- java反射(二)-基于反射和注解的Excel解析工具Demo
- POI下JAVA导出基于模板的Excel