Excel добавляет двойные кавычки при экспорте csv [дубликат]

этот вопрос уже есть ответ здесь:

Я испытываю странное неизвестное поведение в excel. Лист, который я хочу экспортировать в файл csv, состоит из 4 столбцов с такими данными:

site.aspx|de|lblChanges.Text|some text that will be used somewhere

Теперь что происходит, если последний столбец containg текст имеет doublequotes в нем, Excel добавляет еще одну двойную кавычку к нему для каждой двойной кавычки уже в нем.

пример:

site.aspx|de|lblChanges.Text|some text that will used somewhere <a href="/clickety.aspx">here</a>

превращается в

site.aspx|de|lblChanges.Text|"some text that will used somewhere <a href="/clickety.aspx">here</a>"

обратите внимание на дополнительные двойные знаки в начале и в конце, которых явно не должно быть. эти данные вставляются в базу данных и используются в качестве текстовых ресурсов для глобализации. Если я отображаю литеральный элемент управления с этими дополнительными двойными кавычками щебень.

как я могу подавить это поведение в Excel?

7
задан Dave
10.04.2023 8:15 Количество просмотров материала 2421
Распечатать страницу

3 ответа

кавычки являются стандартными для CSV, когда поля включают пробелы (как в вашем случае).

обычно, вы бы написать все ваши CSV с кавычками (и избежать кавычки, которые вы хотите сохранить с двумя кавычками ""):

"field 1", "field 2", "field with ""escaped"" quotes"

вот полное объяснение, включая конкретные ссылки на обработку Excel: http://www.csvreader.com/csv_format.php

но это может быть трудно получить то, что вы хотите, если вы не контролируете экспорт Excel, и вы не управление программой импорта. Возможно, вам придется настроить текстовый файл в середине процесса.

7
отвечен pgr 2023-04-11 16:03

это хорошо документировано и является ожидаемым поведением. Тем не менее, обойти это кажется сложным, и я могу думать только о обходных путях.

работы по-видимому, откройте экспортированный файл и найти и заменить кавычки ни с чем (убрать кавычки).

Если вам нужно больше контроля (например, вы можете кавычки в некоторых случаях), то вы должны сделать это вручную, или взломать его-добавить уникальное ключевое слово, где вы хотите, чтобы " существовать (например не используя " , но вместо qwertquote (поскольку эта строка будет уникальной, вы можете найти и заменить ее кавычкой) или напишите служебное приложение, чтобы сделать это за вас, так как у вас есть опыт программирования.

есть какой-то код из http://www.mcgimpsey.com/excel/textfiles.html#csvwithquotes

текстовые файлы, без модификации

этот макрос будет выводить текстовый файл без окружающих ячеек, которые имеют запятые в кавычках знаки, или двойные кавычки в тексте:

Public Sub TextNoModification()
    Const DELIMITER As String = "," 'or "|", vbTab, etc. 
    Dim myRecord As Range
    Dim myField As Range
    Dim nFileNum As Long
    Dim sOut As String

    nFileNum = FreeFile
    Open "Test.txt" For Output As #nFileNum
    For Each myRecord In Range("A1:A" & _
            Range("A" & Rows.Count).End(xlUp).Row)
        With myRecord
            For Each myField In Range(.Cells(1), _
                    Cells(.Row, Columns.Count).End(xlToLeft))
                sOut = sOut & DELIMITER & myField.Text
            Next myField
            Print #nFileNum, Mid(sOut, 2)
            sOut = Empty
        End With
    Next myRecord
    Close #nFileNum
End Sub
3
отвечен Dave 2023-04-11 18:20

Из Википедии:http://en.wikipedia.org/wiki/Comma-separated_values

поля со встроенными запятыми или символами двойных кавычек должны быть заключены в кавычки.

1997, Ford, E350,"супер, роскошный грузовик"

и

каждый из встроенные двойные кавычки должны быть представлены двойные кавычки.

1997, Ford, E350, "супер", " роскошный"" грузовик"

Так файл csv должен эти двойные кавычки должны быть экранированы (с помощью другого набора двойных кавычек), потому что двойная кавычка сама по себе обозначает границы поля.

2
отвечен Brian J 2023-04-11 20:37

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх