4

Я пытаюсь использовать OpenOffice Calc для редактирования файлов CSV с TAB качестве разделителя. Независимо от того, что я делаю, Calc настаивает на добавлении кавычек (") в строки. Если содержимое ячейки только число, это нормально.

Есть ли способ не позволить Calc сделать это? Я имею в виду, TAB достаточно для любого парсера, верно?

2 ответа2

1

Зачем вам двойные кавычки?

Я имею в виду, TAB достаточно для любого парсера, верно?

Нет, технически это не так! Как упоминалось в моем ответе о формате CSV в Excel, общий формат и тип MIME для файлов CSV (RFC 4180) определяют, что:

… Каждое поле может быть или не быть заключено в двойные кавычки (однако некоторые программы, такие как Microsoft Excel, вообще не используют двойные кавычки). Если поля не заключены в двойные кавычки, то двойные кавычки могут не появляться внутри полей.

Все идет нормально. Очевидно, что Calc всегда заключает его в двойные кавычки.

Поля, содержащие разрывы строк (CRLF), двойные кавычки и запятые, должны быть заключены в двойные кавычки

… Так вот где двойная кавычка должна быть для правильного повторного анализа CSV.

Почему Calc добавляет их?

Calc, вероятно, делает это как меру безопасности для всех текстовых полей. Напротив, то, что делает Excel, несколько двусмысленно.

Как вы можете избежать их?

Я нашел сообщение на форуме, в котором предлагается использовать макрос для отключения разделителей текста:

Dim oDocCsv As Object       
Dim CsvProperties(2) As New com.sun.star.beans.PropertyValue 

.... 

CsvProperties(0).Name    = "FilterName" 
CsvProperties(0).Value   = "Text - txt - csv (StarCalc)" 
CsvProperties(1).Name    = "FilterOptions" 
CsvProperties(1).Value   = "124,0,ANSI,2" 

.... 

oDocCsv.storeAsURL("test.csv", CsvProperties()) 

Важным вариантом здесь является линия с 124,0,ANSI,2 . Согласно ссылке «Параметры фильтра», вторая часть (то есть 0) отключает разделители текста при экспорте.

0

Открыть файл TSV (с двойными кавычками) в блокноте ++

  1. Заменить "" на "
  2. Заменить \t" на \t
  3. Заменить "\t на \t

notepad++ заменить диалог

и вы сделали ....

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .