利用commons-csv进行csv文件输出(Java)


前言

本文介绍利用apache的commons-csv相关类进行csv数据的输出。
实现的功能是在java代码中进行csv文本的输出,同时我们知道csv数据可以用excel打开


提示:以下是commons-csv包的下载路径,下载Binaries版本找到里面的commons-csv.jar包

https://commons.apache.org/proper/commons-csv/download_csv.cgi

一、设置输出文件位置和输出流

        File file = new File("D:");//输出csv文件到d盘
//        if (!file.exists()) {
//                file.mkdirs();
//            }
        Appendable printWriter = null;//指定GBK,解决Microsoft不兼容
        try {
            printWriter = new PrintWriter(file + "/虚词统计.CSV","GBK");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        CSVPrinter csvPrinter = null;

文件位置可以自行定义

二、输出表格头部

 csvPrinter = CSVFormat.EXCEL.withHeader("","第一列","第二列","第三列").print(printWriter);

注意:输出流是要包含在try catch块中的
以下是我的包含在try catch块中的整体代码,其中有各行的输出,在第三部分会接着介绍(当然具体输出什么由你决定)

 try {
            csvPrinter = CSVFormat.EXCEL.withHeader("","而","乎","何","乃","其","且","若","所","为","焉","以","因","于","与","也","则","者","之").print(printWriter);//具体头部由你自己决定
           for(int i=1;i<=chapterNumber;i++){//具体输出什么由你自己决定
               csvPrinter.print("第"+i+"章");
               for (int j = 0; j < 18; j++) {
                   csvPrinter.print(count[i][j]);
               }
               csvPrinter.println();
               csvPrinter.flush();
           }
            csvPrinter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        }

三、输出每一行的内容

1.输出一个单元格

 csvPrinter.print("一个单元格");

2. 换行刷新

csvPrinter.println();
csvPrinter.flush();

这样可以利用循环一格一格输出你的内容,利用csvPrinter.println()可以换行

3.整行输出

当然你不想一个单元格一个单元格进行输出,可以整行输出

csvPrinter.printRecord("第一格" , "第二格","第三格");//进行整行输出

四、我的示例代码

我的代码是对一个文本进行统计其每章虚词的个数,并用csv进行输出,可以直接用excel进行打开。了解上方所述的基本commons-csv的应用就可以简单的输出自己相要的表格了

package com.company;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;

import java.awt.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
	    /* 文件读取 */
        String str="";
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(
                    new FileInputStream("D:\\red.txt"), "utf-8"));
            while (reader.ready()) {
                String line = reader.readLine();
                str+=line;
            }
            reader.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        str.replaceAll("\\s*", "");//去掉空格
        String []empty={"而","乎","何","乃","其","且","若","所","为","焉","以","因","于","与","也","则","者","之"};

        int [][]count=new int[200][18];//用来记录个数
        for(int i=0;i<200;i++) {
            for (int j = 0; j < 18; j++) {
                count[i][j] = 0;
            }
        }

        int chapterNumber=0;//记录章数
        for(int i=0;i<str.length();i++){//遍历文本
           String s=String.valueOf(str.charAt(i));
           if(s.equals("s")){//遇到s表示一章
               chapterNumber++;
           }
          for(int j=0;j<18;j++){
              if(empty[j].equals(s)){
                  count[chapterNumber][j]++; //匹配虚词数量加1
              }
          }
        }

        File file = new File("D:");//输出csv文件到d盘
//        if (!file.exists()) {
//                file.mkdirs();
//            }
        Appendable printWriter = null;//指定GBK,解决Microsoft不兼容
        try {
            printWriter = new PrintWriter(file + "/虚词统计.CSV","GBK");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        CSVPrinter csvPrinter = null;
        try {
            csvPrinter = CSVFormat.EXCEL.withHeader("","而","乎","何","乃","其","且","若","所","为","焉","以","因","于","与","也","则","者","之").print(printWriter);
           for(int i=1;i<=chapterNumber;i++){
               csvPrinter.print("第"+i+"章");
               for (int j = 0; j < 18; j++) {
                   csvPrinter.print(count[i][j]);
               }
               csvPrinter.println();
               csvPrinter.flush();
           }
            csvPrinter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        }


}

总结

这就是利用commons-csv进行简单的csv文件输出,具体还有很多功能,可以去官网进行查看
https://commons.apache.org/proper/commons-csv/apidocs/index.html

参考文章
csv读写操作(commons-csv) lichenfei_fei

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
commons-csv-1.8.jar是一个JavaCSV文件处理库。CSV(逗号分隔值)是一种常见的文件格式,用于存储和传输表格数据。它将每行数据存储为逗号分隔的数值或字符串字段。 commons-csv-1.8.jar提供了一组功能强大的API,用于读取、写入和操作CSV文件。它可以帮助用户轻松地处理CSV文件,无需手动解析每个字段并进行操作。这个库具有高度的灵活性和可扩展性,可以适应各种不同的CSV文件格式和需求。 在读取CSV文件方面,commons-csv-1.8.jar可以解析整个文件并将其转换为可操作的数据结构,例如列表或映射。它可以处理包含标题行的文件,并根据需要跳过或读取特定的列。此外,它还可以处理包含引号或转义字符的字段,并正确解析其中的逗号。 在写入CSV文件方面,commons-csv-1.8.jar提供了一种简单且灵活的方式来生成CSV文件。它可以将数据结构(例如列表或映射)转换为CSV格式,并将其写入文件输出流。用户可以定义字段分隔符、引号字符和换行符等设置,以满足特定的文件格式要求。 commons-csv-1.8.jar还可以对CSV文件进行一些高级操作,例如按条件过滤数据、排序、聚合和组合不同的CSV文件等。它还支持通过自定义解析器、格式化器和转换器来处理特殊的数据需求。 总而言之,commons-csv-1.8.jar是一个功能强大且易于使用的Java库,可以帮助用户有效地读取、写入和操作CSV文件。无论是处理小型还是大型的CSV文件,它都可以提供高效和可靠的解决方案。无论是在数据处理、数据分析、数据导入/导出还是与其他系统的集成等方面,它都是一个非常有用的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值