Как сделать Java-объект с запятой в значении, чтобы не разбить на 2 ячейки CSV - PullRequest
0 голосов
/ 07 февраля 2019

Другой вопрос не отвечает на проблему с объектом, сгенерированным из XML из внешней системы, где нет возможности добавлять кавычки, обратную косую черту или любой другой текст.

У меня есть скрипт:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;

public class test {
    public static void main(String[] args){

      try {
        File fileDir = new File("c:\\java2\\test.csv");

        Writer out = new BufferedWriter(new OutputStreamWriter(
            new FileOutputStream(fileDir), "UTF8"));
            out.append('\ufeff');
        out.append("Webňite, UTF-8").append(",");


        out.append("?? UTF-8");
        out.append(",");
        out.append("??????? UTF-8").append("\r\n");

        out.flush();
        out.close();

        } 
       catch (UnsupportedEncodingException e) 
       {
        System.out.println(e.getMessage());
       } 
       catch (IOException e) 
       {
        System.out.println(e.getMessage());
        }
       catch (Exception e)
       {
        System.out.println(e.getMessage());
       } 
    }   
}

Мне нужно, чтобы текст "Webňite, UTF-8" записывался в одну ячейку при преобразовании в CSV.

Возможно ли это?

В настоящее время из 3тексты Я получил 4 ячейки в CSV, и мне нужно 3.

Мне нужен текст, состоящий из знака запятой, чтобы не разбить файл CSV на 2 ячейки.

(только пример сценарияв целях демонстрации, в конце у меня есть Java-объект из XML, который состоит из запятой в его значении и нежелательно разделяется на 2 ячейки.

Так что мне нужно решение, которое также будет работать не для чистого текста внутридобавить, но и для объекта.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Используйте цитату, например

out.append("\"Webňite, UTF-8\"").append(",");

или

out.append("'Webňite, UTF-8'").append(",");

или лучше, но используйте существующую библиотеку CSV например super CSV и т. Д.

0 голосов
/ 07 февраля 2019

Попробуйте заключить символ запятой в кавычки.Поэтому измените строку:

out.append("Webňite, UTF-8").append(",");

на

out.append("Webňite\",\" UTF-8").append(",");

См. Ответ Есть ли способ включить запятые в столбцы CSV, не нарушая форматирование? (Кстатиэто может быть дубликат вопроса)

...