SpringBoot+CSV导出

源码:http://pan.baidu.com/s/1pLsiXZ1  

在线联系:QQ:179061434 

pom.xml添加依赖:

CSV导出

importdemo.spring.mybatis.config.ExportUtil;

importdemo.spring.mybatis.model.UserModel;

importdemo.spring.mybatis.service.DemoService;

importorg.apache.commons.lang3.time.DateFormatUtils;

importorg.apache.poi.hssf.usermodel.*;

importorg.apache.poi.hssf.util.HSSFColor;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.scheduling.annotation.Scheduled;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjava.io.IOException;

importjava.io.OutputStream;

importjava.lang.reflect.Field;

importjava.lang.reflect.InvocationTargetException;

importjava.lang.reflect.Method;

importjava.text.SimpleDateFormat;

importjava.util.*;

@RequestMapping("/csv")

publicStringfindBuyCSV(HttpServletResponse response) {

List> dataList =null;

List userModels =demoservice.getAll();// 查询到要导出的信息

if(userModels.size() ==0) {

System.out.println("无数据导出");

}

String sTitle ="ID,姓名,年龄,密码,邮箱";

String fName ="buywater_";

String mapKey ="id,name,age,password,email";

dataList =newArrayList<>();

Map map =null;

for(UserModel user : userModels) {

map =newHashMap();

map.put("id",user.getId() );

map.put("name",user.getName());

map.put("age",user.getAge());

map.put("password",user.getPassword());

map.put("email",user.getEmail());

dataList.add(map);

}

try(finalOutputStream os = response.getOutputStream()) {

ExportUtil.responseSetProperties(fName,response);

ExportUtil.doExport(dataList,sTitle,mapKey,os);

return null;

}catch(Exception e) {

System.out.println(e);

}

return"数据导出出错";

}






有一个配置文件:

packagedemo.spring.mybatis.config;

importjava.io.OutputStream;

importjava.io.UnsupportedEncodingException;

importjava.net.URLEncoder;

importjava.text.SimpleDateFormat;

importjava.util.Date;

importjava.util.List;

importjava.util.Map;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.lang3.time.DateFormatUtils;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

public classExportUtil {

private static finalLoggerlogger= LoggerFactory.getLogger(ExportUtil.class);

/**

* CSV文件列分隔符

*/

private static finalStringCSV_COLUMN_SEPARATOR=",";

/**

* CSV文件列分隔符

*/

private static finalStringCSV_RN="\r\n";

/**

*@paramdataList集合数据

*@paramcolNames表头部数据

*@parammapKey查找的对应数据

*@paramresponse返回结果

*/

public static booleandoExport(List> dataList,String colNames,String mapKey,OutputStream os) {

try{

StringBuffer buf =newStringBuffer();

String[] colNamesArr =null;

String[] mapKeyArr =null;

colNamesArr = colNames.split(",");

mapKeyArr = mapKey.split(",");

// 完成数据csv文件的封装

// 输出列头

for(inti =0;i < colNamesArr.length;i++) {

buf.append(colNamesArr[i]).append(CSV_COLUMN_SEPARATOR);

}

buf.append(CSV_RN);

if(null!= dataList) {// 输出数据

for(inti =0;i < dataList.size();i++) {

for(intj =0;j < mapKeyArr.length;j++) {

buf.append(dataList.get(i).get(mapKeyArr[j])).append(CSV_COLUMN_SEPARATOR);

}

buf.append(CSV_RN);

}

}

// 写出响应

os.write(buf.toString().getBytes("GBK"));

os.flush();

return true;

}catch(Exception e) {

logger.error("doExport错误...",e);

}

return false;

}

/**

*@throwsUnsupportedEncodingException setHeader

*/

public static voidresponseSetProperties(String fileName,HttpServletResponse response)throwsUnsupportedEncodingException {

// 设置文件后缀

SimpleDateFormat sdf =newSimpleDateFormat("yyyyMMddHHmmss");

String fn = fileName + sdf.format(newDate()).toString() +".csv";

// 读取字符编码

String utf ="UTF-8";

// 设置响应

response.setContentType("application/ms-txt.numberformat:@");

response.setCharacterEncoding(utf);

response.setHeader("Pragma","public");

response.setHeader("Cache-Control","max-age=30");

response.setHeader("Content-Disposition","attachment; filename="+ URLEncoder.encode(fn,utf));

}

}

####指导qq:179061434

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 该文仅对于中间这种支付方式有参考价值哟 一、开发背景 在微信公众号中,需要进行微信支付且为微信公众号网页支付。 二...
    英文名叫夏天阅读 1,861评论 0 7
  • 9af0e05c6c75阅读 375评论 0 0
  • 基本重点 是学习技能还是技能学习,是1万小时 理论的精通还是达到一般水平 学习技能有些像传统在学校的学习,我们在学...
    在云端仰望星空阅读 175评论 0 0
  • 很长很长一段时间,我都觉得夜晚让我内心宁静。 白天不敢面对的、消化不了的都可以在夜里反复咀嚼、挣扎、然后平息。 不...
    秧秧ing阅读 215评论 0 0