Вопрос или проблема
В 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++
- Замените
""
на"
- Замените
\t"
на\t
- Замените
"\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 оборачивает такие поля в двойные кавычки. В этой статье мы предложим несколько подходов для предотвращения добавления кавычек, обеспечивая при этом чистоту и совместимость выходных данных.
-
Проблематика использования кавычек в Excel:
По стандартным правилам CSV (Comma-Separated Values), если поле содержит символы, требующие экранирования, такие как запятые, кавычки или переносы строки, Excel оборачивает это поле в кавычки. Это является стандартной практикой для обеспечения корректности формата, но может стать проблемой для работы с некоторыми приложениями, которые не требуют такого экранирования. -
Использование альтернативного формата файла:
Один из наиболее простых способов избежать кавычек — это сохранить данные в формате.prn
(Formatted Text (Space Delimited)). Однако этот метод имеет свои ограничения — максимальная длина строки не должна превышать 240 символов. В случае превышения данного лимита данные могут быть неправильно обрезаны. -
Копирование и вставка в текстовый редактор:
Простой и эффективный метод заключается в следующем:- Выделите все ячейки на листе (сочетание клавиш Ctrl+A на Windows или Command+A на Mac).
- Скопируйте их (Ctrl+C или Command+C).
- Вставьте содержимое в текстовый редактор, такой как Notepad, Atom или Sublime Text.
Этот метод автоматически уберет все кавычки и обеспечит чистый TSV.
-
Использование макроса 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, убирая кавычки.
-
Дополнительные способы обработки данных:
- Текстовый редактор с поддержкой паттернов: Если у вас уже есть TSV-файл с кавычками, вы можете использовать Notepad++ или аналогичные текстовые редакторы для замены кавычек. В Notepad++ выполните замены:
- Замените
""
на"
. - Замените
\t"
на\t
. - Замените
"\t
на\t
.
- Замените
- Использование Open Office Calc: В Open Office Calc вы можете сохранить файл в формате CSV, выбрав параметр "Edit filter settings" и очистив поле "Text delimiter".
- Текстовый редактор с поддержкой паттернов: Если у вас уже есть TSV-файл с кавычками, вы можете использовать Notepad++ или аналогичные текстовые редакторы для замены кавычек. В Notepad++ выполните замены:
Заключение:
Избавление от кавычек при экспорте данных из Excel в формат TSV может быть достигнуто несколькими способами, включая использование альтернативных форматов, копирование в текстовые редакторы или написание макросов VBA. Важно выбрать наиболее подходящий вариант в зависимости от ваших потребностей и ограничений. Для обеспечения совместимости с другими платформами и приложениями рекомендуется использовать кодировку UTF-8.