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 }

 

目录
相关文章
|
29天前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
|
1月前
|
Java
利用GraalVM将java文件变成exe可执行文件
这篇文章简明地介绍了如何使用GraalVM将一个简单的Java程序编译成exe可执行文件,首先通过javac命令编译Java文件生成class文件,然后使用native-image命令将class文件转换成独立的exe文件,并展示了如何运行这个exe文件。
49 0
利用GraalVM将java文件变成exe可执行文件
|
8天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
9天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
21 4
|
12天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
12天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
1月前
|
Java
用java搞定时任务,将hashmap里面的值存到文件里面去
本文介绍了如何使用Java的`Timer`和`TimerTask`类创建一个定时任务,将HashMap中的键值对写入到文本文件中,并提供了完整的示例代码。
34 1
用java搞定时任务,将hashmap里面的值存到文件里面去
|
21天前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
40 2
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
56 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
21天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
95 1