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文件的主要内容,如果未能解决你的问题,请参考以下文章

java 解析csv

OpenCSV:如何使用自定义列标题和自定义列位置从 POJO 创建 CSV 文件?

如何使用opencsv读取没有标头的csv文件?

java实现解析csv文件方法二:解析csv文件并转成bean

OpenCSV快速方便导出CSV文件拿虾C++

用opencsv文件读写CSV文件