java 读取 csv文件 您所在的位置:网站首页 java读取csv文件表头获取的字符串不带双引号 java 读取 csv文件

java 读取 csv文件

2024-07-03 12:01| 来源: 网络整理| 查看: 265

java 读取 csv 文件详解 一、opencsv com.opencsv opencsv 5.4 1. 读取 csv 文件,手动解析

读取 csv 文件的每一行数据,每行存入一个 string []

/** * 读取csv文件 * * @param file csv文件 * @return 数组 */ public static List getCsvDataMethod(MultipartFile file) { List list = new ArrayList(); int i = 0; try { CSVReader csvReader = new CSVReaderBuilder( new BufferedReader( new InputStreamReader(file.getInputStream(), "utf-8"))).build(); Iterator iterator = csvReader.iterator(); while (iterator.hasNext()) { String[] next = iterator.next(); //去除第一行的表头,从第二行开始 if (i >= 1) { list.add(next); } i++; } return list; } catch (Exception e) { System.out.println("CSV文件读取异常"); return list; } } 2. 通过注解映射为 bean

javabean 属性上使用注解 @CsvBindByName 修饰

import com.opencsv.bean.CsvBindByName; import lombok.Data; @Data public class MyBean{ @CsvBindByName(column = "name") private String name; @CsvBindByName(column = "title") private String title; }

解析 csv 文件

/** * 解析csv文件并转成bean(方法三) * * @param file csv文件 * @param clazz 类 * @param 泛型 * @return 泛型bean集合 */ public static List getCsvDataMethod3(MultipartFile file, Class clazz) { InputStreamReader in = null; CsvToBean csvToBean = null; try { in = new InputStreamReader(file.getInputStream(), "utf-8"); HeaderColumnNameMappingStrategy strategy = new HeaderColumnNameMappingStrategy(); strategy.setType(clazz); csvToBean = new CsvToBeanBuilder(in).withMappingStrategy(strategy).build(); } catch (Exception e) { logger.error("数据转化失败"); return null; } return csvToBean.parse(); } 二、 javacsv net.sourceforge.javacsv javacsv 2.0

读取 csv 文件

import com.csvreader.CsvReader; import java.nio.charset.Charset; CsvReader csvReader = new CsvReader("CSV文件路径", ',', Charset.forName("utf-8")); // 获取出当前CSV文件所有的表头信息 String[] headers = csvReader.getHeaders(); // 获取出当前CSV文件所有的表头的数量 int headerCount = csvReader.getHeaderCount(); // 跳过表头(相当于读取完了表头) csvReader.readHeaders(); // 读取每行的内容 while (csvReader.readRecord()) { // 获取当前行,第2列的内容 String value1 = csvReader.get(2); // 获取当前行标题为URL的内容 String value2 = csvReader.get("URL"); // 获取当前行的所有数据(以分隔符分隔的当前行的所有数据) String rawRecord = csvReader.getRawRecord(); // 获取当前行的所有数据(数组形式) String[] values = csvReader.getValues(); } // 读取完成之后,关闭流 csvReader.close(); 三、 easycsv sdk easycsv 4.0.0 system ${project.basedir}/lib/EasyCSV-1.0-SNAPSHOT.jar

通过 @CsvProperty 注解,将 bean 的属性和 csv 的字段进行映射

// 核心代码 List dataList = new EasyCsv().readAll(filePath, OriginalCsvData.class); 在实际开发过程中,发现如果字段内容中也包含 ",",则不能正确的映射字段值。暂无其他解决思路。目前通过手动解析来解决这个问题。 四、 fastcsv de.siegmar fastcsv 1.0.3

读取 csv 文件

public static void csvReadOperation() throws IOException { File file = new File("F:\\Excel\\customer-info.csv"); CsvReader csvReader = new CsvReader(); csvReader.setContainsHeader(true); CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8); for (CsvRow row : csv.getRows()) { System.out.println("First column of line: " + row.getField("用户编号")); } } public static void csvReadOperation1() throws IOException { File file = new File("F:\\Excel\\customer-info.csv"); CsvReader csvReader = new CsvReader(); CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8); for (CsvRow row : csv.getRows()) { if (row.getOriginalLineNumber() != 1) { ResultInfo resultInfo = new ResultInfo(); resultInfo.setUserId(row.getField(0)); resultInfo.setUserPhone(row.getField(1)); listResultInfo.add(resultInfo); } } } public static void csvReadOperation2() throws IOException { File file = new File("F:\\Excel\\customer-info.csv"); CsvReader csvReader = new CsvReader(); try (CsvParser csvParser = csvReader.parse(file, StandardCharsets.UTF_8)) { CsvRow row; while ((row = csvParser.nextRow()) != null) { System.out.println("Read line: " + row); System.out.println("First column of line: " + row.getField(0)); } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有