首页 > 解决方案 > 如何将字符串中的逗号添加到csv中的单个单元格

问题描述

当我尝试将一些文本写入 CSV 时,我发现它在文本中的第一个逗号处剪切了文本,因此将字符串写入 2 个不同的单元格而不是 1。无论如何围绕这个问题,因为文本会从网络上抓取而不是输入

功能代码的要点是

String text = "hello, this is me";
        try {
            PrintWriter csv = new PrintWriter(new File("test.csv"));
            csv.write(text);        
            csv.close();        
        }
        catch(Exception e) {

        }

标签: javacsv

解决方案


测试.csv

a;b;c
d;e;f

测试2.csv

a;b;c
,;e;f

Java代码使用 opencsv

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.List;

import com.opencsv.CSVParserBuilder;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.CSVWriter;

public class Sof {

    public static void main(String[] args) {
        CSVReader reader;
        try (CSVWriter writer = new CSVWriter(new FileWriter(new File("src/main/resources/test2.csv")), ';', Character.MIN_VALUE, '\\', "\n");) {
            reader = new CSVReaderBuilder(new InputStreamReader(new FileInputStream("src/main/resources/test.csv"), StandardCharsets.UTF_8))
                    .withCSVParser(new CSVParserBuilder().withSeparator(';').build()).build();
            final List<String[]> csvBody = reader.readAll();
            System.out.println(csvBody.size());
            csvBody.get(1)[0] = ",";
            writer.writeAll(csvBody);
            writer.flush();
            reader.close();
        } catch (final IOException e1) {
            System.err.println(e1);
        }

    }

}

推荐阅读