文档章节

使用commons-csv生成.csv文件

刘春辉
 刘春辉
发布于 2015/07/14 18:25
字数 276
阅读 3339
收藏 17

做个代码笔记,方便以后看。

commons-csv-1.1.jar的源码:https://github.com/apache/commons-csv

CsvFileBuilder.java类

package com.huihui.main;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;

public class CsvFileBuilder {
	
	private static final String[] header = { "id", "name"};	
	
	private static FileWriter fileWriter = null;
	private static CSVPrinter csvPrinter = null;
	private static CSVFormat csvFormat = CSVFormat.DEFAULT.withRecordSeparator('\n');  // 每条记录间隔符
	
	public static void write(Map<String, String> info) {
		File file = new File("test.csv");	
		System.out.println(file.getAbsolutePath());
		try {											
			if (!file.exists()) {
				fileWriter = new FileWriter("test.csv",true);  // 创建test.csv的字符输出流		
				csvPrinter = new CSVPrinter(fileWriter, csvFormat);
				csvPrinter.printRecords(header);  // 生成.csv表的字段名
				System.out.println("执行");
			}else {
				fileWriter = new FileWriter("test.csv",true);  // 创建test.csv的字符输出流		
				csvPrinter = new CSVPrinter(fileWriter, csvFormat);
				System.out.println("文件存在");
			}
							
			Set<String> ids = info.keySet();			
			for (String id : ids) {
				List<String> idName = new ArrayList();
				idName.add(id);
				idName.add(info.get(id));
				csvPrinter.printRecord(idName);  // 向.csv文件中添加记录数据
			}
			System.out.println("生成.csv文件");
		}catch(IOException e) {
			e.printStackTrace();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			try {
				csvPrinter.flush();
				fileWriter.flush();				
				fileWriter.close();	
				csvPrinter.close();	
			}catch (Exception e) {
				e.printStackTrace();
			}			
		}
		
	}
}

测试类:

package com.huihui.main;

import java.util.HashMap;
import java.util.Map;

public class TestCsvFileBuilder {
	public static void main(String[] args) {
		
		Map<String, String> idName = new HashMap();
		idName.put("1", "Java");
		idName.put("2", "C++");
		idName.put("3", "Python");
		idName.put("4", "Ruby");
		
		CsvFileBuilder.write(idName);
	}
}


源码+jar包(在源码的lib文件下)下载地址:http://pan.baidu.com/s/1ntBY2ud

© 著作权归作者所有

刘春辉
粉丝 4
博文 18
码字总数 5952
作品 0
淄博
程序员
私信 提问
加载中

评论(1)

刘春辉
刘春辉 博主
没搞清FileWriter这个类,导致file.exists()一直是存在的。晕~~
commons-csv 处理0开头的数字问题

使用commons-csv 生成csv文件时,如果数据内容是0开头的纯数字,那么,生成的文件使用excel打开时,内容会把前面的0全部去掉,按照csv的语法,可以使用=“001”这样的写法解决,但是我没看到...

愚_者
2017/06/29
178
1
Apache Commons CSV 1.6 发布,CSV 文件读写库

Apache Commons CSV 1.6 已发布(要求 Java 7+),Commons CSV 是一个用来读写各种 Comma Separated Value (CSV) 格式文件的 Java 库。 新特性 CSV-217: Add autoFlush option for CsvPrint......

淡漠悠然
2018/09/28
1K
3
Apache Commons CSV 1.5,读写 CSV 文件的 Java 库

Apache Commons CSV 1.5 已发布(要求 Java 7+),Commons CSV 是一个用来读写各种 Comma Separated Value (CSV) 格式文件的 Java 库。 主要改进记录如下: withNullString value is printe...

淡漠悠然
2017/09/03
1K
4
Apache Commons CSV 1.0 正式版发布

Apache Commons CSV为各种类型的CSV文件的读写提供了简单易用的接口,近日,Apache Commons CSV 1.0正式版发布发布,JDK版本要求至少是1.6版本,现已提供二进制和源码两种方式的下载。更多相...

亚当李
2014/08/15
1K
1
使用django生成CSV文件

生成小的CSV文件: 这里将用一个生成小的CSV文件为例,来把生成CSV文件的技术要点讲到位。我们用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去。示例代码如下...

wenguonideshou
2018/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript权威指南笔记5

第五章、语句 0、概述 JS程序是一系列可执行语句的集合。 通过控制语句来改变语句的默认执行顺序。 控制语句:条件、循环和跳转(如return、break和throw) 2、复合语句 当多条语句被当做一条语...

_Somuns
8分钟前
3
0
vmware安装ubuntu18.04总是 panic -not syncing:corrupted stack end detected inside schedule

Vmware 安装ubuntu 总是卡着不动, 提示panic -not synciong 网上提示很多办法,都试了效果不佳, 找到了完美解决办法 你的兼容模式重新选一下为6.0,兼容性对硬件有要求的 即可实现 成功安装...

dragon_tech
16分钟前
3
0
centos7 安装 mysql5.7 版本(全)

centos 安装 版本说明 :centos7,mysql5.7 ,不是 centos7 可能有些命令不兼容 安装 mysql-server # 下载并安装 mysql yum wget -i -c http://dev.mysql.com/get/mysql57-community-relea......

sanri1993
45分钟前
4
0
Spring3.x升级到Spring4.x-5.x时关于MappingJacksonHttpMessageConverter的报错问题

在Spring4.x或者以上的版本强使用(不然会报错): org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 如果是Spring4.0获者以下的版本可以使用MappingJacksonH...

code-ortaerc
48分钟前
4
0
OSG 渲染状态污染到其它节点怎么解决?

在根节点补上初始状态

洛克人杰洛
49分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部