Импорт в Excel текстового файла с разделителями табуляции - символ CR в кавычках игнорируется

315
AcePL

У меня большой TXTфайл с разделителями TAB.
Текст заключен в кавычки, но Excel по-прежнему разбивает значения на две строки, когда внутри инкапсулированной строки появляется символ CR.

Есть ли способ заставить Excel не разбивать строки?

1
Не могли бы вы предоставить скриншот проблемы, и, возможно, какой результат вы ожидаете? piko 5 лет назад 0
@piko GDPR ... Данные, о которых идет речь, - это адрес одного из клиентов, вплоть до безопасного места для доставки. Постараюсь санировать его, но затем можно будет набрать все это, так как оно будет в основном таким же. AcePL 5 лет назад 0
конечно, не публикуйте реальную информацию;) Кроме того, вы можете проверить [подобные вопросы] (https://stackoverflow.com/questions/2668678/importing-csv-with-line-breaks-in-excel- 2007). Различные решения были предоставлены, может быть, один может удовлетворить ваши потребности? Несмотря на то, что он предназначен для файла CSV, а не для файла TXT, но поскольку оба формата похожи ... Вы также можете легко преобразовать свой TXT в формат CSV, с которым будет проще работать в Excel. piko 5 лет назад 1

1 ответ на вопрос

1
Wouter

Следующий ответ частично освещает эту проблему.

Как верно указывает Дж. Эшли, существует разница между тем, как Excel обрабатывает файл CSV при двойном щелчке по сравнению с Файл-> Открыть (или Данные-> Импорт).

В дополнение к замечанию Дж. Эшли я проверил и сделал следующие выводы:

  • Когда инкапсулированные поля содержат \ n (LF) или \ r \ n (CR-LF), они открываются правильно при двойном щелчке, но создают проблему, упомянутую OP при использовании File-> Open (или импорт)
  • Когда инкапсулированные поля содержат \ r (CR), они вызывают проблему, упомянутую OP, независимо от того, что вы делаете. Использование UTF8-BOM, без Bom, двойной щелчок, Файл-> Открыть, Данные-> Импорт ... всегда одна и та же проблема.

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

Возможный обходной путь
Выполните поиск / замену Regex в вашем файле, чтобы заменить '\ r ([^ \ n])' на '\ n \ 1'. Это изменяет все CR, за которыми не следует LF, в LF. \ 1 просто для сохранения завершающего символа.

Заключительные шаги
Excel продолжает удивлять меня таинственными способами того, как произвольно он обрабатывает файлы с плоскими текстовыми данными без обратной связи с пользователем ... Опять же, большинство пользователей будут поражены и смущены тем, что плоские текстовые файлы не являются файлами Excel .

Изменить: скрипт Powershell для поиска замены в огромных файлах

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False Get-Content -Encoding UTF8 -ReadCount 1000 input.txt | Foreach-Object {  [System.IO.File]::AppendAllLines( [string]'output.txt', [string[]]($_) // TODO: add regex replacement here )  } 
К сожалению, редактировать файл `txt` сложно, так как он очень большой. На самом деле их несколько, но размер варьируется от 1 до 10 ГБ и может содержать от 500 до 12 миллионов строк. Большинство текстовых редакторов отказываются от размера. AcePL 5 лет назад 0
Ах, у меня также есть такие огромные файлы. Я приложил сценарий PowerShell, который может справиться с этим. Wouter 5 лет назад 0

Похожие вопросы