Importation à partir d'un fichier texte délimité par des tabulations dans Excel - le caractère CR entre guillemets est ignoré

1

J'ai un gros TXTfichier délimité par TAB.
Le texte est entouré de guillemets, mais Excel sépare toujours les valeurs en deux lignes lorsqu'un caractère CR apparaît dans la chaîne encapsulée.

Existe-t-il un moyen de forcer Excel à ne pas rompre les lignes?

AcePL
la source
Pourriez-vous peut-être fournir une capture d'écran du problème et éventuellement le résultat escompté?
piko
@piko GDPR ... Les données en question sont l'adresse d'un des clients, vers un lieu sûr pour les livraisons. Je vais essayer de le désinfecter, mais vous pourriez aussi bien tout écrire, car ce sera fondamentalement le même.
AcePL
1
bien sûr, ne postez pas de vraies informations;) Vous voudrez peut-être vérifier ces questions similaires . Diverses solutions ont été proposées, peut-être une solution pour répondre à vos besoins? Même s'il est destiné à un fichier CSV et non à un fichier TXT, mais puisque les deux formats sont similaires ... Vous pouvez également convertir facilement votre TXT en CSV, ce qui serait plus facile à utiliser dans Excel.
piko

Réponses:

1

La réponse suivante met partiellement en évidence le problème.

Comme J Ashley l'a fait remarquer avec justesse, il existe une différence entre la manière dont Excel traite le fichier CSV lorsque vous double-cliquez sur vs Fichier-> Ouvrir (ou Données-> Importer).

En plus de la remarque de J Ashleys, j'ai testé et conclu ce qui suit:

  • Lorsque les champs encapsulés contiennent \ n (LF) ou \ r \ n (CR-LF), ils s’ouvrent correctement lorsque vous double-cliquez, mais génèrent le problème mentionné par OP lorsque vous utilisez Fichier-> Ouvrir (ou importer).
  • Lorsque les champs encapsulés contiennent \ r (CR), ils produisent le problème mentionné par OP, quoi que vous fassiez. En utilisant UTF8-BOM, No bom, double-cliquez sur, Fichier-> Ouvrir, Données-> Importer ... toujours le même problème.

Par conséquent, il ne semble pas y avoir de moyen de résoudre ce problème à partir d’Excel.

Solution possible
Effectuez une recherche / remplacement Regex dans votre fichier pour remplacer "\ r ([^ \ n])" par "\ n \ 1". Cela change tous les CR qui ne sont pas suivis par une FL en une FL. Le \ 1 est juste pour préserver le caractère de fin.

Les questions finales
Excel ne cesse de me surprendre de manière mystérieuse sur la manière arbitraire dont il traite les fichiers de données à texte plat sans fournir de retour à l'utilisateur ... Encore une fois, la plupart des utilisateurs seraient submergés et confus par la notion que les fichiers de texte plats ne sont pas des fichiers Excel .

Edit: script Powershell pour trouver remplacer dans des fichiers énormes

$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
        ) 
    }
Wouter
la source
Malheureusement, éditer un txtfichier est difficile car il est très volumineux. En réalité, il y en a plusieurs, mais la taille varie entre 1 et 10 Go et contient entre 500 et 12 millions de lignes. La majorité des éditeurs de texte rechignent à la taille.
AcePL
Ah, j'ai aussi des fichiers énormes comme ça. J'ai joint un script PowerShell permettant de résoudre ce problème.
Wouter