1. CSV文件简介

现在好多的网站中导出的文件会出现一种csv文件,我们接下来学习一下csv文件的导出方式。

CSV文件:Comma-Separated Values,中文叫逗号分隔值或者字符分割值,其文件以纯文本的形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分割。每条记录由字段组成,字段间的分隔符是其他字符或者字符串。所有的记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。
用文本文件、excel或者类似与文本文件的编辑器都可以打开CSV文件。

为了简化开发,我们可以使用opencsv类库来导出csv文件

1.1.需要的依赖

<dependency><groupId>com.opencsv</groupId><artifactId>opencsv</artifactId><version>4.5</version>
</dependency>

1.2 opencsv常用API

写入到csv文件会用到CSVWriter对象,创建此对象常见API如下


使用CSVWriter对象写入数据常用的方法如下:

读取csv文件会用到CSVReader对象,创建此对象常见API如下

构造器涉及到的三个参数:

  1. reader:读取文件的流对象,常有的是BufferedReader,InputStreamReader。
  2. separator:用于定义前面提到的分割符,默认为逗号CSVWriter.DEFAULT_SEPARATOR用于分割各列。
  3. quotechar:用于定义各个列的引号,有时候csv文件中会用引号或者其它符号将一个列引起来,例如一行可能是:“1”,“2”,“3”,如果想读出的字符不包含引号,就可以把参数设为:"CSVWriter.NO_QUOTE_CHARACTER "
    read方法

2.3 导出CSV文件

2.3.1 需求

我们还是以需求作为学习的驱动:把用户的列表数据导出到csv文件中

2.3.2 代码实现

UserController代码

@GetMapping(value = "/downLoadCSV",name = "导出用户数据到CSV文件中")
public void downLoadCSV(HttpServletResponse response){userService.downLoadCSV(response);
}

UserService代码

public void downLoadCSV(HttpServletResponse response) {try {//            准备输出流ServletOutputStream outputStream = response.getOutputStream();//            文件名String filename="百万数据.csv";//            设置两个头 一个是文件的打开方式 一个是mime类型response.setHeader( "Content-Disposition", "attachment;filename="  + new String(filename.getBytes(),"ISO8859-1"));response.setContentType("text/csv");//            创建一个用来写入到csv文件中的writerCSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream,"utf-8"));//            先写头信息writer.writeNext(new String[]{"编号","姓名","手机号","入职日期","现住址"});//            如果文件数据量非常大的时候,我们可以循环查询写入int page = 1;int pageSize=200000;while (true) {  //不停地查询List<User> userList = this.findPage(page, pageSize);if (CollectionUtils.isEmpty(userList)) {  //如果查询不到就不再查询了break;}//                把查询到的数据转成数组放入到csv文件中for (User user : userList) {writer.writeNext(new String[]{user.getId().toString(),user.getUserName(),user.getPhone(),simpleDateFormat.format(user.getHireDate()),user.getAddress()});}writer.flush();page++;}writer.close();} catch (Exception e) {e.printStackTrace();}
}

2.4 了解opencsv读取CSV文件

读取刚才导出的CSV文件

package com.itheima.test;import com.itheima.pojo.User;
import com.opencsv.CSVReader;import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.time.Year;
import java.util.List;//读取百万级数据的csv文件
public class CsvDemo {private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");public static void main(String[] args) throws Exception {CSVReader csvReader = new CSVReader(new FileReader("d:\\百万用户数据的导出.csv"));String[] titles = csvReader.readNext(); //读取到第一行 是小标题
//        "编号","姓名","手机号","入职日期","现住址"User user = null;while (true){user = new User();String[] content = csvReader.readNext();if(content==null){break;}user.setId(Long.parseLong(content[0]));user.setUserName(content[1]);user.setPhone(content[2]);user.setHireDate(simpleDateFormat.parse(content[3]));user.setAddress(content[4]);System.out.println(user);}}
}

opencsv操作CSV文件相关推荐

  1. openCsv读取csv文件

    https://blog.csdn.net/cat_book_milk/article/details/52953786 Java读取csv文件 https://blog.csdn.net/galen ...

  2. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  3. Pandas 操作 csv 文件

    Pandas 操作 csv 文件 官方英文文档 官方文档PDF下载 中文文档 一.安装 Pandas 安装 Pandas: pip3 install pandas 导入 Pandas: import ...

  4. java 解析csv 乱码_Java采用opencsv解析csv文件以及解析中文乱码问题

    参考资料: opencsv文档 写下本文时最新版的opencsv版本为4.0, maven坐标如下: com.opencsv opencsv 4.0 测试用test.csv id,date,name ...

  5. 使用.NET类库操作CSV文件

    CSV文件,是指使用逗号对数据进行分割的文本数据文件.昨天有人提出了一个问题,就是怎么对CSV文件进行操作,并且给出了一个类的定义.我根据这个类定义实现了一个能够读些CSV文件的类. 由于涉及到了字符 ...

  6. pythoncsv文件的操作_python操作CSV文件

    概念:CSV是逗号分隔值或者字符分割值,其文件以纯文本形式存储表格数据.CSV文件可以用文本文件或者转换成EXCEL(直接用EXCEL也可以,但是可能会有一些问题)打开.因此更适合通过CSV文件进行程 ...

  7. java解析csv文件工具类,java操作CSV文件工具类

    离线路灯 UID:3 注册时间2011-08-21 最后登录2021-03-15 在线时间5398小时 发帖659 精华44 金币3650 威望1881 股份280 发帖659 金币3650威望188 ...

  8. Csvmapper操作csv文件

    csv文件上传/读取/压缩/保存 import com.fasterxml.jackson.dataformat.csv.CsvMapper; import com.fasterxml.jackson ...

  9. opencsv解析csv文件

    注意如果是UTF-8-BOM模式,第一行会有bom的头标识,请修改文件编码模式为UTF-8,否则第一列会为空 package com.ydd.tools;import java.io.File; im ...

最新文章

  1. django框架的基础知识点《贰》
  2. python将二维列表内容写入和读取.txt文件
  3. java用爬虫爬一个页面_使用Java写一个简单爬虫爬取单页面
  4. OpenCV中的CV_IMPL是什么意思?
  5. CAP原理和BASE思想
  6. 剑指offer六:旋转数组的最小数字
  7. python如何读取excel的一个sheet_python pandas是如何读取excel表中的sheet的(四)
  8. 如何提高VS2010的性能,VS2010不再…
  9. SpringBoot2.x集成Apache Shiro并完成简单的Case开发
  10. dbf转成excel_dbf转excel工具(DbfToExcel) v1.2 免费版
  11. 无损压缩算法专题——无损压缩算法介绍
  12. 输入数据求熵值法matlab代码,熵值法matlab程序
  13. ORAN专题系列-28:5G基站如何升级到ORAN基站 - O-RU - 平台和传输层的改进(VLAN, PCP, DHCP, DNS)
  14. BatteryProperty上报流程
  15. MACD指标在外汇交易中的另类运用方法
  16. for _ in range(100)中的下滑杠_表示什么意思?
  17. 深度学习在文档矫正中的应用
  18. docker中mysql数据定时备份_[Docker]MySql 定时备份
  19. 自动取款机属于计算机领域中的,《计算机知识》真题库290题
  20. 牛客网判断推理练习题

热门文章

  1. 2021-08-05 Hello,word! Day 02
  2. 本题要求实现一个统计整数中指定数字的个数的简单函数。
  3. 微信前端之在微信浏览器内禁用网页分享菜单的解决方案
  4. 完美契合,实现最大团队工作效率
  5. 云服务器https配置和ssl申请
  6. OTSU图像分割算法(python实现)
  7. 2022年最新广西建筑八大员(土建质量员)考试试题题库及答案
  8. 脑机接口科普0013——中枢神经与周围神经
  9. Sharding-Sphere 3.X今日瞩目登场如约而至!
  10. 一文了解,如何在VMware指定磁盘分区 扩容