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();
}
}
}
}
}