本文目录一览:
- 1、如何正确读取csv文件
- 2、java如何用FileIputStream按行读取csv文件 求代码
- 3、如何把csv的数据分割成多个excel数据?
- 4、csv文件处理——Opencsv
- 5、csv文件是什么意思
如何正确读取csv文件
package xufei;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 文件规则
* Microsoft的格式是最简单的。以逗号分隔的值要么是“纯粹的”(仅仅包含在括号之前),
* 要么是在双引号之间(这时数据中的双引号以一对双引号表示)。
* Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K
* 这一行包含七个字段(fields):
* Ten Thousand
* 10000
* 2710
* 空字段
* 10,000
* It's "10 Grand", baby
* 10K
* 每条记录占一行
* 以逗号为分隔符
* 逗号前后的空格会被忽略
* 字段中包含有逗号,该字段必须用双引号括起来。如果是全角的没有问题。
* 字段中包含有换行符,该字段必须用双引号括起来
* 字段前后包含有空格,该字段必须用双引号括起来
* 字段中的双引号用两个双引号表示
* 字段中如果有双引号,该字段必须用双引号括起来
* 第一条记录,可以是字段名
*/
/**
*
タイトル: xufei.CSVAnalysis.java
*
说明:
*
著作権: Copyright (c) 2006
*
会社名: technodia
* @author 徐飞
* @version 1.0
* createDate Aug 11, 2008
* 修正履歴
* 修正日 修正者 修正理由
*/
public class CSVAnalysis {
private InputStreamReader fr = null;
private BufferedReader br = null;
public CSVAnalysis(String f) throws IOException {
fr = new InputStreamReader(new FileInputStream(f));
}
/**
* 解析csv文件 到一个list中
* 每个单元个为一个String类型记录,每一行为一个list。
* 再将所有的行放到一个总list中
* @return
* @throws IOException
*/
public List readCSVFile() throws IOException {
br = new BufferedReader(fr);
String rec = null;//一行
String str;//一个单元格
List listFile = new ArrayList();
try {
//读取一行
while ((rec = br.readLine()) != null) {
Pattern pCells = Pattern
.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
Matcher mCells = pCells.matcher(rec);
List cells = new ArrayList();//每行记录一个list
//读取每个单元格
while (mCells.find()) {
str = mCells.group();
str = str.replaceAll(
"(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
str = str.replaceAll("(?sm)(\"(\"))", "$2");
cells.add(str);
}
listFile.add(cells);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
fr.close();
}
if (br != null) {
br.close();
}
}
return listFile;
}
public static void main(String[] args) throws Throwable {
CSVAnalysis parser = new CSVAnalysis("c:/test2.csv");
parser.readCSVFile();
}
}
java如何用FileIputStream按行读取csv文件 求代码
FileInputStream是按字节读取文件的
按行读取的话,用BufferedReader
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("ss.csv"));
String str = "";
while (null != (str = br.readLine())) {
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (br!= null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
用的相对路径,ss.csv和类放在一个文件夹里了
如何把csv的数据分割成多个excel数据?
1、首先Excel2007版一下最大支持65000多条数据,你必须安装Office2007版以上。
2、使用Access2007(Office组件之一),新建一个数据库。
3、使用导入外部数据中的“从文本导入”功能,选择CSV文件,注意一下导入向导中的“数据类型”及选择第一行做标题,直至完成。
4、导出为Excel文件即可。
目的就是避免几十万数据量造成电脑假死机。
当然你的电脑够BT的话,直接用Excel打开CSV文件,另存为Excel格式即可。
可以用 access,但是没有必要。CSV 是文本文件,网上找一个支持按行拆分的文件分割的小软件处理就可以了。
如果你不排斥自己写个脚本来处理,那么 bat 、power shell、VBS 都是可选的,会 python、perl 就更好了。比导入 access 之后再自己写输出可以省一步功夫。
csv文件处理——Opencsv
Comma-Separated Value ( [卡门 赛婆乱提的] 逗号分隔)(CSV),因分隔符没有严格的要求,可以使用逗号,也可以使用其他字符(如制表符\t,分号等),所以CSV也被称为 逗号分隔或者其他字符分隔值 。csv文件是使用纯文本来存储表格数据(只能存储文本,不能存储二进制)。-csv文件按行解析
构造器涉及到的三个参数:
注:若是设置解析的编码,需要在InputStreamReader对象中设置。
在上面我们可以使用readNext或者readAll进行逐行解读。但是opencsv提供了基于"策略"的映射,将CSV绑定到bean。
注:bean的类型只能为基本数据类型以及String类型,若是BigDecimal类型,那么将会抛出异常。
解析后的bean类:
csv文件:
通俗点就是列位置映射,csv文件中列位置对应到bean中的列。
需要注意的是,该策略会输出所有的行, 故,我们需要跳过某些行。
测试方法:
测试结果:
csv文件:
测试结果:
在csv获取的都是字符串,这种情况下应该使用转换器。将csv中的字段转换为对应的bean中的字段类型。
opencsv为我们提供了上面的两个转换器(我们可以参考,来实现自定义转换器)。使用 AbstractBeanFieldT 类来实现转换器。
csv文件
注:若是列映射策略,则要使用@CsvCustomBindByPosition()注解。
测试结果:
所有的过滤器必须实现CsvToBeanFilter 接口
测试结果
(官网)csv官方文档
(官网)CSVParserBuilder——CSVParser的目的是获取单个字符串并根据分隔符,引号和转义字符将其解析为其元素。
(官网)CSVReaderBuilder类
(理论)原CSV类库:OpenCSV
(API)用opencsv文件读写CSV文件
(API)opencsv4.0 自定义规则
csv文件是什么意思
CSV文件
CSV文件是电子表格程序常用的逗号分隔值文件。它包含以逗号分隔的纯文本数据集。
CSV文件中的每个新行表示一个新的数据库行,每个数据库行由一个或多个以逗号分隔的字段组成。
CSV文件通常由电子表格程序打开,以组织成单元格或用于在数据库之间传输数据。
CSV数据交换格式由大量个人、商业和科学程序支持。由于其广泛的支持,格式在程序之间传输表格数据时特别有用。
此外,CSV文件还有助于将以专有格式保存的数据传输到另一个不支持XLSX格式的程序中。