zoukankan      html  css  js  c++  java
  • Java导出csv表格

    CSV简介

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文
    本形式存储表格数据(数字和文本)。

    示例代码

    import java.io.BufferedOutputStream;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;
    import org.springbooks.bootTest.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.MediaType;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class UserController {
    
        //BufferedOutputStream
        @GetMapping("/csv")
        public void csv(HttpServletResponse resp) throws IOException {
            resp.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            resp.setHeader("Content-Disposition", "attachment;filename=111.csv");
            resp.setCharacterEncoding("UTF-8");
            ServletOutputStream os = resp.getOutputStream();
            BufferedOutputStream bos = new BufferedOutputStream(os);
            
            String[] titles = new String[]{"id","name","age"};
            List<Map<String,String>> list = new ArrayList<>();
            for(int i=0;i<10;i++) {
                Map<String,String> map = new HashMap<>();
                map.put("id", String.valueOf(i));
                map.put("name", "张三");
                map.put("age", String.valueOf(Math.random()));
                list.add(map);
            }
            //添加BOM头,解决中文乱码
            bos.write(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }); 
            //bos.write(b);
            //写表格头
            for(String title: titles) {
                bos.write(title.getBytes("UTF-8"));
                bos.write(",".getBytes("UTF-8"));
            }
            bos.write("
    ".getBytes("UTF-8"));
            //写 表格体
            for(Map<String,String> line: list) {
                bos.write(line.get("id").getBytes("UTF-8"));
                bos.write(",".getBytes("UTF-8"));
                bos.write(line.get("name").getBytes("UTF-8"));
                bos.write(",".getBytes("UTF-8"));
                bos.write(line.get("age").getBytes("UTF-8"));
                bos.write(",".getBytes("UTF-8"));
                bos.write("
    ".getBytes("UTF-8"));
            }
            os.flush();
            bos.close();
            os.close();
    
        }
        
        //PrintWriter
        @GetMapping("/csv2")
        public void csv2(HttpServletResponse resp) throws IOException {
            resp.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(Math.random()+".csv", "iso8859-1"));
            resp.setCharacterEncoding("UTF-8");
            PrintWriter output = resp.getWriter();
            String[] titles = new String[]{"id","name","age"};
            List<Map<String,String>> list = new ArrayList<>();
            for(int i=0;i<10;i++) {
                Map<String,String> map = new HashMap<>();
                map.put("id", String.valueOf(i));
                map.put("name", "张三");
                map.put("age", String.valueOf(Math.random()));
                list.add(map);
            }
            //添加BOM头,解决中文乱码
            String bom = new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF });
            output.print(bom);
            //写表格头
            for(String title: titles) {
                output.print(title);
                output.print(",");
            }
            output.println("");
            //写 表格体
            for(Map<String,String> line: list) {
                output.print(line.get("id"));
                output.print(",");
                output.print(line.get("name"));
                output.print(",");
                output.print(line.get("age"));
                output.println(",");
            }
            output.flush();
            output.close();
        }
    }
  • 相关阅读:
    负载均衡算法实现方式
    TCP三次握手和四次挥手
    深度解析Java内存原型
    缓存击穿、缓存穿透和缓存雪崩
    uni-app分包加载
    vuex的使用
    在web中打开exe程序并传参
    Vue 中引用高德地图
    .Net Core 从MySql数据库生成实体类 Entity Model
    vs2017 创建项目推送到Git上
  • 原文地址:https://www.cnblogs.com/dch0/p/14778825.html
Copyright © 2011-2022 走看看