java 生成 csv文件

简介: 一、csv文件   逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

 一、csv文件

  逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。

“CSV”泛指具有以下特征的任何文件:

  • 纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312;
  • 由记录组成(典型的是每行一条记录);
  • 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);
  • 每条记录都有同样的字段序列。

二、示例

  相关代码如下:

  1 package com.test.excel;
  2 
  3 import java.io.BufferedWriter;
  4 import java.io.File;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.io.OutputStreamWriter;
  8 import java.net.URLEncoder;
  9 import java.util.ArrayList;
 10 import java.util.Arrays;
 11 import java.util.Date;
 12 import java.util.List;
 13 
 14 import org.junit.Test;
 15 
 16 /**
 17  * 创建CSV文件
 18  */
 19 public class CSVCrate {
 20 
 21     /**
 22      * 创建CSV文件
 23      */
 24     @Test
 25     public void createCSV() {
 26         
 27         // 表格头
 28         Object[] head = { "客户姓名", "证件类型", "日期", };
 29         List<Object> headList = Arrays.asList(head);
 30 
 31         //数据
 32         List<List<Object>> dataList = new ArrayList<List<Object>>();
 33         List<Object> rowList = null;
 34         for (int i = 0; i < 100; i++) {
 35             rowList = new ArrayList<Object>();
 36             rowList.add("张三" + i);
 37             rowList.add("263834194" + i);
 38             rowList.add(new Date());
 39             dataList.add(rowList);
 40         }
 41         
 42         String fileName = "testCSV.csv";//文件名称
 43         String filePath = "c:/test/"; //文件路径
 44         
 45         File csvFile = null;
 46         BufferedWriter csvWtriter = null;
 47         try {
 48             csvFile = new File(filePath + fileName);
 49             File parent = csvFile.getParentFile();
 50             if (parent != null && !parent.exists()) {
 51                 parent.mkdirs();
 52             }
 53             csvFile.createNewFile();
 54 
 55             // GB2312使正确读取分隔符","
 56             csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024);
 57             
 58             //文件下载,使用如下代码
 59 //            response.setContentType("application/csv;charset=gb18030");
 60 //            response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
 61 //            ServletOutputStream out = response.getOutputStream();
 62 //            csvWtriter = new BufferedWriter(new OutputStreamWriter(out, "GB2312"), 1024);
 63             
 64             int num = headList.size() / 2;
 65             StringBuffer buffer = new StringBuffer();
 66             for (int i = 0; i < num; i++) {
 67                 buffer.append(" ,");
 68             }
 69             csvWtriter.write(buffer.toString() + fileName + buffer.toString());
 70             csvWtriter.newLine();
 71 
 72             // 写入文件头部
 73             writeRow(headList, csvWtriter);
 74 
 75             // 写入文件内容
 76             for (List<Object> row : dataList) {
 77                 writeRow(row, csvWtriter);
 78             }
 79             csvWtriter.flush();
 80         } catch (Exception e) {
 81             e.printStackTrace();
 82         } finally {
 83             try {
 84                 csvWtriter.close();
 85             } catch (IOException e) {
 86                 e.printStackTrace();
 87             }
 88         }
 89     }
 90     
 91     /**
 92      * 写一行数据
 93      * @param row 数据列表
 94      * @param csvWriter
 95      * @throws IOException
 96      */
 97     private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
 98         for (Object data : row) {
 99             StringBuffer sb = new StringBuffer();
100             String rowStr = sb.append("\"").append(data).append("\",").toString();
101             csvWriter.write(rowStr);
102         }
103         csvWriter.newLine();
104     }
105 }

 

目录
相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
92 2
|
3月前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
526 2
|
8天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
63 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
29天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
87 34
|
2月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
46 3
|
2月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
2月前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
157 2
|
2月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
78 4
|
2月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
99 4