Предотвращение использования кавычек вокруг текста при экспорте в TSV

Вопрос или проблема

В Excel есть ли возможность предотвратить использование кавычек в текстовых строках при экспорте листа в TSV?

Если ваши данные содержат двойные кавычки, запятые или символы новой строки, то Excel обернет это поле в двойные кавычки в текстовом файле (и удвоит любые существующие двойные кавычки).

Обратите внимание на эту запись в Википедии о “Основных правилах” для CSV файлов (которые, похоже, Excel соблюдает).

К сожалению, Excel сохраняет это таким образом, и вы не можете много с этим сделать.

Вам может понадобиться написать макрос VBA, чтобы удалить их при сохранении (если это возможно), или написать программу для удаления их позже, или, возможно, использовать текстовый редактор и выполнить поиск и замену на “null”, или реализовать grep или что-то подобное.

Если вы используете формат .prn “Отформатированный текст (разделенный пробелами)” для сохранения текста в Excel, то кавычки не добавляются.

Кратко:
В Excel (Mac или PC, практически любая версия)
Выделите все ячейки на листе (ctrl-a или command-a), скопируйте их и вставьте в текстовый редактор, такой как блокнот, atom, sublime или textwrangler.
Вот и все, НИКАКИХ кавычек вокруг полей и TSV!

Подробнее:
Excel может быть неприятным, когда работаем с чем-либо, что должно быть обработано другими программами, но этот трюк позволяет получить данные в самом чистом виде TSV.

Формат TSV не требует такого уровня экранирования и кавычек, как CSV.
Я использую простую модель экранирования табуляций, новых строк, возвратов каретки с помощью \t, \n, \r
Все остальное оставляется без изменений, включая кавычки и расширенные/многобайтовые символы. UTF8 хорошо работает для этого.

Символы, которые Excel и Word используют для кавычек, могут сильно варьироваться, так как они, как правило, используют кодировку Windows 1252, так что если у вас есть эти или другие “окношные” символы, вам следует конвертировать их в юникод (предпочтительно UTF8) для большей совместимости, если вы создаете файлы для альтернативных платформ.

@zork Что касается формата .prn, изначально я думал, что это действительно будет моим решением, но есть проблема… ограничение строки в 240 символов. Если вы пишете только строки короче этого, это нормально, но в противном случае вы застряли.

Смотрите упоминание об этом лимите на сайте office.microsoft.com.

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

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

и вы готовы…
Оригинальный ответ здесь Сохранение в CSV файл всегда добавляет кавычки в OpenOffice

Используйте Open Office Calc, сохраните как csv файл и отметьте флажок “Редактировать параметры фильтра”. Когда появится окно параметров фильтра, очистите поле Разделитель текстов.

@DanJGer:

VBA – это наименьшее из зол, на мой взгляд.

Sub TSV(SourceRange As Range, FileName As String, _
    Optional ByVal Delim As String = vbLf)
    Dim vList As Variant, vOut As Variant, i&, j&, sTxt As String
    Dim oFS As Object
    
    vList = SourceRange.Value2
    
    ReDim vOut(1 To UBound(vList))
    For i = 1 to UBound(vList)
        For j = 1 To UBound(vList,2)
            sLine = sLine & vbTab & CStr(vList(i, j))
        Next j
        vOut(i) = Mid(sLine,2)
    Next i
    sTxt = Join(vOut,Delim)

    Set oFS = CreateObject("Scripting.FileSystemObject")
    oFS.OpenTextFile(FileName:=FileName, _
        iomode:=2).Write sTxt 'iomode 2 = ForWrite
End Sub

(обработка ошибок на ваше усмотрение)

Если размер файла большой, вы можете, конечно, легко разбить запись на части.

Ответ или решение

Заголовок: Как избежать использования кавычек при экспорте данных из Excel в формат TSV

Введение:
Экспорт данных из Excel в формат TSV (Tab-Separated Values) может вызвать некоторые проблемы, особенно если в ваших текстовых строках присутствуют кавычки, запятые или символы новой строки. По умолчанию Excel оборачивает такие поля в двойные кавычки. В этой статье мы предложим несколько подходов для предотвращения добавления кавычек, обеспечивая при этом чистоту и совместимость выходных данных.

  1. Проблематика использования кавычек в Excel:
    По стандартным правилам CSV (Comma-Separated Values), если поле содержит символы, требующие экранирования, такие как запятые, кавычки или переносы строки, Excel оборачивает это поле в кавычки. Это является стандартной практикой для обеспечения корректности формата, но может стать проблемой для работы с некоторыми приложениями, которые не требуют такого экранирования.

  2. Использование альтернативного формата файла:
    Один из наиболее простых способов избежать кавычек — это сохранить данные в формате .prn (Formatted Text (Space Delimited)). Однако этот метод имеет свои ограничения — максимальная длина строки не должна превышать 240 символов. В случае превышения данного лимита данные могут быть неправильно обрезаны.

  3. Копирование и вставка в текстовый редактор:
    Простой и эффективный метод заключается в следующем:

    • Выделите все ячейки на листе (сочетание клавиш Ctrl+A на Windows или Command+A на Mac).
    • Скопируйте их (Ctrl+C или Command+C).
    • Вставьте содержимое в текстовый редактор, такой как Notepad, Atom или Sublime Text.
      Этот метод автоматически уберет все кавычки и обеспечит чистый TSV.
  4. Использование макроса VBA:
    Для автоматизации процесса можно создать макрос на VBA, который будет экспортировать данные в формат TSV без кавычек. Вот пример кода:

    Sub ExportToTSV(SourceRange As Range, FileName As String)
       Dim vList As Variant, vOut As Variant
       Dim i&, j&, sLine As String
       Dim oFS As Object
    
       vList = SourceRange.Value2
       ReDim vOut(1 To UBound(vList))
    
       For i = 1 To UBound(vList)
           sLine = ""
           For j = 1 To UBound(vList, 2)
               sLine = sLine & vbTab & CStr(vList(i, j))
           Next j
           vOut(i) = Mid(sLine, 2)  ' Убираем начальный таб
       Next i
    
       Set oFS = CreateObject("Scripting.FileSystemObject")
       oFS.OpenTextFile(FileName:=FileName, iomode:=2).Write Join(vOut, vbLf) ' Запись данных
    End Sub

    Данный макрос позволяет выбрать диапазон ячеек и сохранить его как TSV, убирая кавычки.

  5. Дополнительные способы обработки данных:

    • Текстовый редактор с поддержкой паттернов: Если у вас уже есть TSV-файл с кавычками, вы можете использовать Notepad++ или аналогичные текстовые редакторы для замены кавычек. В Notepad++ выполните замены:
      • Замените "" на ".
      • Замените \t" на \t.
      • Замените "\t на \t.
    • Использование Open Office Calc: В Open Office Calc вы можете сохранить файл в формате CSV, выбрав параметр "Edit filter settings" и очистив поле "Text delimiter".

Заключение:
Избавление от кавычек при экспорте данных из Excel в формат TSV может быть достигнуто несколькими способами, включая использование альтернативных форматов, копирование в текстовые редакторы или написание макросов VBA. Важно выбрать наиболее подходящий вариант в зависимости от ваших потребностей и ограничений. Для обеспечения совместимости с другими платформами и приложениями рекомендуется использовать кодировку UTF-8.

Оцените материал
Добавить комментарий

Капча загружается...