Зачем вам двойные кавычки?
Я имею в виду, 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
) отключает разделители текста при экспорте.