java csv 工具_csv导出导入工具类 commons-csv导出

CSVUtils是一个Java工具类,用于CSV文件的导入和导出。它提供了导出CSV文件的方法exportCsv,该方法接受一个文件对象和数据列表作为参数,并使用GBK编码。同时,它还包含一个importCsv方法,可以从CSV文件读取数据到列表。此外,它还利用apache-commons-csv库实现了一个更复杂的写入方法write,可以指定表头并根据Map数据结构写入CSV文件。
摘要由CSDN通过智能技术生成

packageutils;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.util.ArrayList;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;importorg.apache.commons.csv.CSVFormat;importorg.apache.commons.csv.CSVPrinter;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;/*** csv导入导出工具类

*@authorkpzc

* @date 2018年12月29日 下午3:45:00

* @desc*/

public classCSVUtils {//private static final Logger logger = LoggerFactory.getLogger(CSVUtils.class);

/*** io流导出

*@authorkpzc

* @date 2018年12月29日 下午3:48:34

*@paramfile csv文件(路径+文件名),csv文件不存在会自动创建

*@paramdataList 数据,字符串用逗号分隔

*@return返回导出是否成功 true成功 false失败*/

public static boolean exportCsv(File file, ListdataList){boolean isSucess=false;

FileOutputStream out=null;

OutputStreamWriter osw=null;

BufferedWriter bw=null;try{

out= newFileOutputStream(file);

osw= new OutputStreamWriter(out, "GBK");//解决FileOutputStream中文乱码问题 解决MS office乱码问题

bw =newBufferedWriter(osw);if(dataList!=null && !dataList.isEmpty()){for(String data : dataList){

bw.append(data).append("\r");

}

}

isSucess=true;

}catch(Exception e) {

isSucess=false;

}finally{if(bw!=null){try{

bw.close();

bw=null;

}catch(IOException e) {

e.printStackTrace();

}

}if(osw!=null){try{

osw.close();

osw=null;

}catch(IOException e) {

e.printStackTrace();

}

}if(out!=null){try{

out.close();

out=null;

}catch(IOException e) {

e.printStackTrace();

}

}

}returnisSucess;

}/*** 导入

*@authorkpzc

* @date 2018年12月29日 下午3:48:11

*@paramfile csv文件(路径+文件)

*@return返回List列表*/

public static ListimportCsv(File file){

List dataList=new ArrayList();

BufferedReader br=null;try{

br= new BufferedReader(newFileReader(file));

String line= "";while ((line = br.readLine()) != null) {

dataList.add(line);

}

}catch(Exception e) {

e.printStackTrace();

}finally{if(br!=null){try{

br.close();

br=null;

}catch(IOException e) {

e.printStackTrace();

}

}

}returndataList;

}/*** apache commons-csv导出

* 注意jdk要在1.7及以上使用

* map的数据个数要与header的个数相等 并且一一对应,可参照main方法

*@authorkpzc

* @date 2019年1月4日 上午10:12:20

*@paramfilePath 文件存储路径

*@paramlist 数据列表

*@paramheader 表头*/

public static void write(String filePath,List>list,String... header) {try{

FileOutputStream fos= newFileOutputStream(filePath);

OutputStreamWriter osw= new OutputStreamWriter(fos, "GBK");

CSVFormat csvFormat=CSVFormat.DEFAULT.withHeader(header);

CSVPrinter csvPrinter= newCSVPrinter(osw, csvFormat);//跟上面两行代码是一样的//CSVPrinter csvPrinter = CSVFormat.DEFAULT.withHeader(header).print(osw);

for (Mapmap : list) {

csvPrinter.printRecord(map.values());

}

csvPrinter.flush();

csvPrinter.close();

}catch(IOException e) {

e.printStackTrace();

}

}public static voidmain(String[] args) {//io流导出

File file=new File("E:/aa.csv");

List dataList=new ArrayList();

dataList.add("1,2,3,'/N',4");

dataList.add("1,2,3,'/N',4");

exportCsv(file, dataList);//apache commons-csv导出

String filePath = "E://aaa.csv";

String header1= "姓名";

String header2= "性别";

String header3= "编号";

String header4= "描述";

List> recordList = new ArrayList>();for (int i = 0; i < 5; i++) {

LinkedHashMap map = new LinkedHashMap();

map.put("name", "zhangsan");

map.put("sex", "男");

map.put("code", "001");

map.put("aa", "aaa");

recordList.add(map);

}

write(filePath, recordList,header1,header2,header3,header4);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中可以使用开源库 Apache Commons CSV 来实现 CSV导入导出。以下是一个简单的示例代码,演示如何在 Java 中使用 Apache Commons CSV导入导出 CSV 文件: 导入 CSV 文件示例代码: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; public class CSVReader { public static void main(String[] args) { String csvFile = "data.csv"; try (BufferedReader br = new BufferedReader(new FileReader(csvFile)); CSVParser parser = new CSVParser(br, CSVFormat.DEFAULT)) { for (CSVRecord record : parser) { String id = record.get(0); String name = record.get(1); String age = record.get(2); // 处理 CSV 数据 // ... } } catch (IOException e) { e.printStackTrace(); } } } ``` 导出 CSV 文件示例代码: ```java import java.io.FileWriter; import java.io.IOException; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; public class CSVWriter { public static void main(String[] args) { String csvFile = "data.csv"; try (FileWriter writer = new FileWriter(csvFile); CSVPrinter printer = new CSVPrinter(writer, CSVFormat.DEFAULT)) { printer.printRecord("1", "John", "Doe"); printer.printRecord("2", "Jane", "Doe"); printer.printRecord("3", "Bob", "Smith"); } catch (IOException e) { e.printStackTrace(); } } } ``` 在实际的应用中,需要根据实际需求进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值