Java生成CSV文件

Java解析CSV:https://blog.csdn.net/u014644574/article/details/105167304

CSV规则

  •  1、以半角逗号(,)作分隔符。
  •  2、单元格中的内容包含半角引号("),需要使用半角双引号("")转义。即单元格中的内容的所有(")使用("")替换。
  •  3、单元格中的内容包含换行符或者包含半角逗号(,),整个单元格的值需要用双引号("")包起来。
package test;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import com.alibaba.fastjson.JSONArray;

/**
 * CSV规则
 * 1、以半角逗号(,)作分隔符。
 * 2、单元格中的内容包含半角引号("),需要使用半角双引号("")转义。即单元格中的内容的所有(")使用("")替换。
 * 3、单元格中的内容包含换行符或者包含半角逗号(,),整个单元格的值需要用双引号("")包起来。
 * 
 * @date 2020年3月28日 下午6:09:48
 */
public class Test {

	public static void main(String[] args) {
		String json = "[[\"\\\"1 23\\\"\\\"\",\"4,5,,6\",\"7\\\" 8(\\\",)9\",\"a\\\"\\\"b\\\"\\\"\\\"c\",\"q\\\"\\r\\n\\\"qq\\r\\n\\r\\nq\"],[\"123\",\"\",\"dfg\\\"\",\"\\r\\n\",\"eee\"],[\"ddd\",\"\",\"\",\"\",\"ggg\"],[\"\",\"\",\"\",\"\",\"\"],[\"ff\",\"ff\",\"f\",\"f\",\"fff\"]]";
		BufferedWriter bw = null;
		try {
			String path = "c:\\CSV\\test.csv";
			bw = new BufferedWriter(new FileWriter(path));
			List<Object> list = JSONArray.parseArray(json);
			String avalue = "", rvalue, cvalue;
			String separator = ",";//分隔符号
			for (Object row : list) {
				rvalue = "";
				for (Object cell : (List) row) {
					cvalue = cell.toString();
					/*
					 * 1、以半角逗号(,)作分隔符。
					 * 2、单元格中的内容包含半角引号("),需要使用半角双引号("")转义。即单元格中的内容的所有(")使用("")替换。
					 * 3、单元格中的内容包含换行符或者包含半角逗号(,),整个单元格的值需要用双引号("")包起来。
					 */
					cvalue = cvalue.replace("\"", "\"\"");
					if (cvalue.contains("\n") || cvalue.contains("\r\n") || cvalue.contains(",")) {
						cvalue = "\"" + cvalue + "\"";
					}
					rvalue += cvalue + separator;
				}
				avalue += rvalue.substring(0, rvalue.length() - 1) + "\r\n";
			}
			bw.write(avalue);
			bw.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值