opencsv解析csv文件
Posted Share_Boy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencsv解析csv文件相关的知识,希望对你有一定的参考价值。
注意如果是UTF-8-BOM模式,第一行会有bom的头标识,请修改文件编码模式为UTF-8,否则第一列会为空
package com.ydd.tools;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.opencsv.CSVParser;
import com.opencsv.bean.CsvToBean;
import com.opencsv.bean.CsvToBeanBuilder;
import com.opencsv.bean.HeaderColumnNameMappingStrategy;
import com.ydd.model.Persion;
/**
* 如果出现第一列读取不到的情况请修改编码模式为UTF-8, (UTF-8-BOM模式会丢失第一列)
* @author pc1010
*/
public class CsvUtil
/**
* 解析csv文件并转成bean
* @param file csv文件
* @param clazz 类
* @param <T> 泛型
* @return 泛型bean集合
*/
public static <T> List<T> getCsvData(File file, Class<T> clazz)
try
List<T> result = new ArrayList<T>();
InputStream fileInput = new FileInputStream(file);
InputStreamReader in = new InputStreamReader(fileInput);
HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(clazz);
CsvToBean<T> csvToBean = new CsvToBeanBuilder<T>(in).withSeparator(CSVParser.DEFAULT_SEPARATOR).withThrowExceptions(false)
.withMappingStrategy(strategy).build();
Iterator<T> iterator = csvToBean.iterator();
while (iterator.hasNext())
try
T t = iterator.next();
result.add(t);
catch (Exception e)
e.printStackTrace();
return result;
catch (Exception e)
e.printStackTrace();
return null;
以上是关于opencsv解析csv文件的主要内容,如果未能解决你的问题,请参考以下文章
OpenCSV:如何使用自定义列标题和自定义列位置从 POJO 创建 CSV 文件?