300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 导出cvs文件格式数据

导出cvs文件格式数据

时间:2019-11-05 18:58:43

相关推荐

导出cvs文件格式数据

在运营后台开发场景中,经常会有导出数据的开发场景,而导出文件时一般都是使用cvs格式文件.虽然在大部分情况,我们都是使用公司封装好的方法直接进行调用,但是我们还是得知道如何进行文件的导出,如果进行文件的上传下载,不然有时无法解决一些特殊情况.下面是导出cvs文件的一个简单方法,如果想导出xls文件的话,那么下载相应的第三方jar依赖,然后使用相应的方法就行.

package com.gudt.example.controller;import org.springframework.http.MediaType;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletResponse;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .MalformedURLException;import .URL;import .URLEncoder;/*** @Auther: lyf* @Date: -08-08 20:34* @Description:*/@Controllerpublic class TestController {/*** 需求:url的文件资源是一个txt文件,当浏览器获取到这个文件流的时候,浏览器会自动解析显示在浏览器上* 所以就无法进行文件的下载.但是如果将文件转换成cvs格式的话,那么浏览器就不会解析,就能进行文件的下载操作* cvs格式和xls格式很像,在开发中很常用* <p>* 这里的txt文件内容是规则的,每一行的格式如:'abc abc',中间已字符串作为分隔符** @param url* @param response*/@RequestMapping("/transfer")public void transfer(String url, HttpServletResponse response) {try {URL resource = new URL(url);if (resource == null)return;try (BufferedReader in = new BufferedReader(new InputStreamReader(resource.openStream()));PrintWriter out = response.getWriter()) {String str;while ((str = in.readLine()) != null) {//将制表位替换成",",cvs格式文件会自动使用","来作为分隔符str.replace("\t", ",");//println会自动进行换行out.println(str);}response.setCharacterEncoding("UTF-8");//以二进制流的格式进行输出response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);//需要指定一下下载的文件名,否则格式无法识别response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("账号密码", "UTF-8") + System.currentTimeMillis() + ".csv");out.flush();} catch (IOException e) {e.printStackTrace();}} catch (MalformedURLException e) {e.printStackTrace();}}/*** 这样就能生成一个csv文件** @param response*/@RequestMapping("/testCvs")public void testCvs(HttpServletResponse response) {StringBuilder sb = new StringBuilder();sb.append("账号,密码\n");sb.append("abc,123\n");sb.append("abc,123\n");sb.append("abc,123\n");try {response.setCharacterEncoding("UTF-8");response.getWriter().write(sb.toString());//以二进制流的格式进行输出response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);//需要指定一下下载的文件名,否则格式无法识别response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("账号密码", "UTF-8") + System.currentTimeMillis() + ".csv");} catch (IOException e) {e.printStackTrace();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。