java操作csv文件(读、写)

来源:互联网 发布:crm系统数据 编辑:程序博客网 时间:2024/05/16 16:12

    今天在做项目的时候,发现使用POI无法解析以csv文件结尾的文件,虽然csv文件能用Excel打开,但是csv文件没有像Excel一样有规定的电子表格形式,故使用POI无法解析csv文件,在网上找了一下,发现java有提供javacsv文件来帮忙解析csv文件。

    CSV是Comma Separated Values(逗号分隔值)的英文缩写,通常都是纯文本文件。首先先来了解csv文件的基本格式:

制造商
型号
说明
价值
1997
Ford
E350
ac, abs, moon
3000.00
1999
Chevy
Venture “Extended Edition”

4900.00
1999
Chevy
Venture “Extended Edition, Very Large”

5000.00
1996
Jeep
Grand Cherokee
MUST SELL!
air, moon roof, loaded
4799.00
上面表格内容若以CSV格式表示就会像下列:
年,制造商,型号,说明,价值
1997,Ford,E350,”ac, abs, moon”,3000.00
1999,Chevy,”Venture “”Extended Edition”“”,”“,4900.00
1999,Chevy,”Venture “”Extended Edition, Very Large”“”,”“,5000.00
1996,Jeep,Grand Cherokee,”MUST SELL!air, moon roof, loaded”,4799.00

java如何操作读写csv呢?可以使用opencsv、javacsv等,本文主要介绍javacsv操作csv文件。

import com.csvreader.CsvReader;  import java.nio.charset.Charset;  import java.util.ArrayList;  import java.util.List;  public class CsvUtil {      //读取csv文件      public List<String[]> readCsv(String filePath) throws Exception {          List<String[]> csvList = new ArrayList<String[]>();          if (isCsv(filePath)) {              CsvReader reader = new CsvReader(filePath, ',', Charset.forName("GBK"));              reader.readHeaders(); // 跳过表头   如果需要表头的话,不要写这句。              while (reader.readRecord()) { //逐行读入除表头的数据                  csvList.add(reader.getValues());              }              reader.close();          } else {              System.out.println("此文件不是CSV文件!");          }          return csvList;      }      //判断是否是csv文件      private boolean isCsv(String fileName) {          return fileName.matches("^.+\\.(?i)(csv)$");      }      //方法测试      public static void main(String[] args) throws Exception {          String filepath = "C:/群组.csv";          CsvUtil su = new CsvUtil();          List<String[]> list = su.readCsv(filepath);          for (int r = 0; r < list.size(); r++) {              for (int c = 0; c < list.get(r).length; c++) {                  String cell = list.get(r)[c];                  System.out.print(cell + "\t");              }              System.out.print("\n");          }      }  }  

写数据到csv文件

/**        * 写入CSV文件        */        public static void WriteCsv(){            try {                    String csvFilePath = "C:/群组.csv";                    CsvWriter wr =new CsvWriter(csvFilePath,',',Charset.forName("SJIS"));//日文编码                  String[] contents = {"警告信息","非法操作","没有权限","操作失败"};                                        wr.writeRecord(contents);                    wr.close();             } catch (IOException e) {                e.printStackTrace();             }        } 

参考博客:http://blog.csdn.net/yaohucaizi/article/details/8817920

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三年级加减法应用题 四年级解方程应用题 二年级上数学应用题 二年级乘除法应用题 2年级下册数学应用题 七年级上数学应用题 三年级上册数学应用题 二年级下册数学应用题 四年级上册数学应用题 四年级上册数学应用题100道 五年级上册数学应用题 小学二年级数学应用题 二年级数学下册应用题大全 三年级下册数学应用题 小学六年级数学应用题 六年级下册数学应用题 七年级上册数学应用题 四年级鸡兔同笼应用题 五年级小数除法应用题 五年级下册数学应用题 三年级上期数学应用题 小学三年级时间应用题 小学二年级数学应用题大全 小学三年级数学应用题上册 六年级工程问题应用题 六年级数学比例应用题 六年级数学工程应用题 五年级鸡兔同笼应用题 10以内的加减法应用题 五年级上册小数除法应用题 小学二年级数学应用题上册 小学三年级上册数学应用题 二年级数学除法应用题 小学二年级除法应用题 二年级下册奥数应用题 七年级数学方程应用题 五年级数学方程应用题 小学数学四年级应用题 小学四年级上册数学应用题 六年级数学方程应用题 二年级上学期数学应用题