Java导出excel基于注解

来源:互联网 发布:vray for c4d r18 mac 编辑:程序博客网 时间:2024/06/06 10:38

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;


}

原创粉丝点击