boot spring 解析csv_SpringBoot+CSV导出

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

在线联系:QQ:179061434

pom.xml添加依赖:

e1b5ace2aa9cf63efa799b9aadc068a9.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值