springboot 导出CSV
java 导出csv
导出csv 时候, 遇到中文乱码的问题,最终这一版,解决了问题
下面是导出csv工具类
package com.basetnt.zhilian.coupon.common.util;
import org.apache.commons.collections.CollectionUtils;import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;/*** @Desc 导出csv线上版本* @Date 2019/2/18 16:10* @Author cui_yl*/
public class CsvExportUtil {/*** CSV文件列分隔符*/private static final String CSV_COLUMN_SEPARATOR = ",";/*** CSV文件行分隔符*/private static final String CSV_ROW_SEPARATOR = System.lineSeparator();/*** @param dataList 集合数据* @param titles 表头部数据* @param keys 表内容的键值* @param os 输出流*/public static void doExport(List<Map<String, Object>> dataList, String titles, String keys, OutputStream os) throws Exception {// 保证线程安全StringBuffer buf = new StringBuffer();String[] titleArr = null;String[] keyArr = null;titleArr = titles.split(",");keyArr = keys.split(",");// 组装表头for (String title : titleArr) {buf.append(title).append(CSV_COLUMN_SEPARATOR);}buf.append(CSV_ROW_SEPARATOR);// 组装数据if (CollectionUtils.isNotEmpty(dataList)) {for (Map<String, Object> data : dataList) {for (String key : keyArr) {buf.append(data.get(key)).append(CSV_COLUMN_SEPARATOR);}buf.append(CSV_ROW_SEPARATOR);}}// 写出响应os.write(buf.toString().getBytes("GBK"));os.flush();}/*** 设置Header** @param fileName* @param response* @throws UnsupportedEncodingException*/public static void responseSetProperties(String fileName, HttpServletResponse response) throws UnsupportedEncodingException {// 设置文件后缀SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String fn = fileName + sdf.format(new Date()) + ".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));}}
下面是调用
//优惠码管理中导出优惠券@ApiOperation(value = "优惠码管理中导出优惠券", notes = "优惠码管理中导出优惠券")@GetMapping(value = "/*****}")@RequiresRoles(value={"admin", "***", "***"}, logical= Logical.OR)public void csv(HttpServletResponse response, @PathVariable Integer id, @RequestParam(value = "Token", required = true) String authorization){try {// 查询需要导出的数据CouponForm record = couponService.couponDetail(id);// 构造导出数据结构String titles = "id,任务名,优惠券类型,优惠券价值,生效日期,截止日期,优惠码"; // 设置表头String keys = "id,task,type,price,startTime,endTime,code"; // 设置每列字段// 构造导出数据List<Map<String, Object>> datas = new ArrayList<>();Map<String, Object> map = null;Coupon coupon = record.getCoupon();Float price = coupon.getPrice()/100F;String type = "一次性码";if (coupon.getType() == CouponType.Common.value()){type = "通用码";}if (null != record && null != coupon){for (CouponCode data : record.getCodeList()) {map = new HashMap<>();map.put("id", coupon.getId());map.put("task", coupon.getTask());map.put("type", type);map.put("price", String.format("%.2f",price));map.put("startTime", DateUtils.dateToString(coupon.getStartTime(), DateUtils.formatter_yyyyMMdd));map.put("endTime", DateUtils.dateToString(coupon.getEndTime(), DateUtils.formatter_yyyyMMdd));map.put("code", data.getCode());datas.add(map);}}// 设置导出文件前缀String fName = "优惠券详情_";// 文件导出OutputStream os = response.getOutputStream();CsvExportUtil.responseSetProperties(fName, response);CsvExportUtil.doExport(datas, titles, keys, os);os.close();} catch (Exception e) {logger.error("导出失败"+e.getMessage(), e);}}
springboot 导出CSV相关推荐
- DataSet导出CSV格式(ASP.NET,C#)
DataSet导出CSV格式(ASP.NET,C#) 作者:Not MSN:notking@hotmail.com Email:nots@sohu.com 本文引用下面的 Microsoft ...
- mysql导出csv数据_mysql 导出 csv数据命令
mysql 导出 csv数据命令 导出 select field1,field2,field3 from tablename into outfile '/home/output1.csv' fiel ...
- plsql developer导出csv乱码问题
最近导出csv时出现乱码 问题 自己摸索找到两种解决办法 方法 1 导出csv格式文件 新建excel文件 比如 a.xls excel软件打开 选择菜单数据 -导入外部数据 unicode默认下一 ...
- java 导出csv 格式,java导出csv格式文件的方法
这篇文章主要为大家详细介绍了java导出csv格式文件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出csv格式文件的本质是导出以逗号为分隔的文本数据 imp ...
- Oracle 导出CSV、导出大数据
第一步:创建导出CSV语句 --创建导出语句 CREATE OR REPLACE PROCEDURE SQL_TO_CSV --名称可以自定义(记住导出时使用) (P_QUERY IN VARCHAR ...
- Mysql 导入导出csv 中文乱码问题的解决方法
导出csv: select t1.stid,t1.cateNodeId,t2.name,t1.name from (select p.stid,p.cateNodeId,r.name from Res ...
- Java导入导出CSV文件
场景:导入导出CSV文件 1.CSVUtils类 package com.delta.gddx;import java.io.BufferedReader; import java.io.Buffer ...
- MongoDB导出csv格式数据
第一步: 在cmd中进入mongodb的安装目录下的bin文件夹 C:\Users\zzz>cd C:\Program Files\MongoDB\Server\4.0\bin 第二步: 从Mo ...
- mysql SQLyog导入导出csv文件
1.选择数据库表 --> 右击属性 --> 备份/导出 --> 导出表数据作为 --> 选择cvs --> 选择下面的"更改" --> 字段 - ...
最新文章
- 什么是未定义的引用/未解决的外部符号错误,如何解决?
- Spring之LoadTimeWeaver——一个需求引发的思考---转
- %matplotlib inline 的作用
- 求职特训营火热来袭 阿里大咖教你制作专业简历
- Centos7 使用Docker 部署Tomca+mysql+调试联通_02
- bzoj1293 [SCOI2009]生日礼物 单调队列
- telerik:RadTreeView树形菜单鼠标放上去展开菜单
- RHEL 4 安装单实例oracle 10g
- 三种找回丢失iPhone的方法,来自苹果手机找回网
- Html 返回顶部代码及注释说明
- 信道编码-RS-CRC-交织(一)
- 医院信息系统源码 HIS源码
- 回首2013,一个屌丝码农的感慨
- hp台式计算机硬盘如何取出,惠普台式机不读硬盘怎么办
- html游戏手机怎么打开方式,aspx文件怎么打开手机(aspx游戏怎么玩)
- 江苏省重点软件企业信息汇总(排名不分先后)
- win10支持8t 硬盘_正版Windows 10免费拿解决问题之“硬盘S.A.M.R.T或MBR异常”
- 线性系统的校正之串联校正
- 有限元matlab_“ANSYS APDL有限元高级分析技术与二次开发”研修班
- ffmpeg的avformat_find_stream_info分析过程(十一)
热门文章
- 关于fontawesome-webfont93e3.ttf加载不到的解决办法
- 安全防御--IPsec VPN点到点的实验
- Flutter 页面无缘无故执行build的解决办法
- 2041. 【2016.5.21普及组模拟】魔方工厂
- 达梦数据库服务器与文件内数据,达梦数据库使用
- PS网页设计教程II——在Photoshop中创建健康及营养或健身的网站
- 初中数学9大经典解题法!
- c语言实验报告周信东,周信东主编最新版c语言程序设计基础实验一实验报告
- PHP上传excel,处理表格数据,并利用ajax提交保存数据
- could not be translated. Either rewrite the query in a form that can be translated