Excel Mac: algunos archivos txt no se pueden abrir / importar ("atenuado")

3

Un poco extraño. Estoy usando Excel para procesar algunos datos que tengo en varios archivos .txt.

Cuando intento importarlos a través de Data > Get External Data > Import Text File :

Comohehechomuchasvecesenelpasado,apareceelcuadrodediálogo"Elegir un archivo", pero cuando navego a la carpeta, solo un par de archivos son "seleccionables"; los otros están "atenuados":

Nohaydiferenciasentrelosarchivosquepuedoverquejustificaríanladiferencia.Laúnica"lógica" es que el archivo "fuente" (llamémoslo 20150728 - SOURCE.TXT ) viene a través del correo electrónico desde una máquina Windows, y los otros dos archivos bloqueados ( 20150728 - Source Fragment 3.TXT y 20150728 - Source Fragment 3 copy.TXT ) son una copia de de la Fuente donde eliminé algunas líneas, y una segunda copia del archivo resultante, mientras que las no bloqueadas comenzaron como la Fuente donde eliminé las líneas, y luego hice un "Guardar como" en TextWrangler. ..

Yo puedo solucionar el problema simplemente copiando el contenido de los archivos "en gris" en un documento nuevo en TextWrangler y guardándolo, pero me gustaría entender el motivo de este comportamiento.

Hacer un file en los archivos en cuestión muestra que son similares, si no iguales:

Mac:samples jjarava$ file 201507*txt
20150728 - Source Fragment 3.TXT:      ASCII text
20150728 - Source Framgent 1.TXT:      ASCII text
20150728 - Source Fragment 1.TXT:      ASCII text
20150728 - Source.TXT:                 ASCII text, with CRLF line terminators
20150728 - Source Fragment 3 copy.TXT: ASCII text

Estoy un poco "atascado" en lo que podría ser el problema. Tengo la sensación de que es uno de esos "Obscure Mac Quirks" que son muy difíciles de explicar.

EDIT : según los comentarios a continuación de @ user3439894 y otros, he revisado los atributos extendidos de los archivos para ver si eso produce alguna pista.

La salida de ls -l@ para los archivos nos da:

-rw-r--r--@ 1 jjarava  staff   7652 Aug  3 13:58 20150728 - Source Fragment 3 (BAD).TXT
    com.apple.FinderInfo       32 
    com.apple.TextEncoding     15 
    com.dropbox.attributes     83 
-rw-r--r--@ 1 jjarava  staff   6570 Aug  3 13:58 20150728 - Source Fragment 1 (Good).TXT
    com.apple.FinderInfo       32 
    com.apple.TextEncoding     15 
    com.dropbox.attributes     83 
-rw-r--r--@ 1 jjarava  staff   6616 Aug  3 13:58 20150728 - Source Fragment 2 (Good).TXT
    com.apple.FinderInfo       32 
    com.apple.TextEncoding     15 
    com.dropbox.attributes     83 
-rw-r--r--@ 1 jjarava  staff  21138 Aug  3 13:58 20150728 - Source (BAD).TXT
    com.apple.FinderInfo       32 
    com.dropbox.attributes     83 

Nuevamente, veo que a uno de los archivos incorrecto (Fuente) le falta el atributo com.apple.TextEncoding , pero el otro archivo "no funciona" tiene tiene el atributo ... En caso de que los valores sean diferentes para los archivos buenos y malos, verifiquemos:

Mac:samples jjarava$ xattr -p com.apple.TextEncoding 201507*txt
20150728 - Source Fragment 3 (BAD).TXT: UTF-8;134217984
Source Fragment 1 (Good).TXT: UTF-8;134217984
Source Fragment 2 (Good).TXT: UTF-8;134217984
xattr: 20150728 - Source (BAD).TXT: No such xattr: com.apple.TextEncoding

Así que tampoco parece ser el truco ...

    
pregunta JJarava 07.08.2015 - 14:16

2 respuestas

3

Yo pienso Tengo una respuesta.

Buscando en Google, he encontrado referencias a problemas "en gris" y menciones del atributo creator del archivo.

Por lo tanto, un Google rápido para " marca de creador del archivo osx " me señaló a SetFile y su hermano GetFileInfo .

Ejecutando un GetFileInfo rápido en los archivos que obtengo:

Mac:samples jjarava$ for i in 201507*.TXT; do getfileinfo "$i"; echo .; done
file: "/path/to/samples/20150728 - Source Fragment 3 (BAD).TXT"
type: "????"
creator: "????"
attributes: avbstclinmedz
created: 08/03/2015 13:58:18
modified: 08/03/2015 13:58:18
.
file: "/path/to/samples/20150728 - Source Framgent 1 (Good).TXT"
type: "TEXT"
creator: "
Mac:samples jjarava$ setfile -t TEXT "20150728 - Source Fragment 3 copy (BAD).TXT"
Mac:samples jjarava$ getfileinfo "20150728 - Source Fragment 3 copy (BAD).TXT"
file: "/path/to/samples/20150728 - Source Fragment 3 copy (BAD).TXT"
type: "TEXT"
creator: "????"
attributes: avbstclinmedz
created: 08/03/2015 13:58:18
modified: 08/03/2015 13:58:18
Mac:samples jjarava$ for i in 201507*.TXT; do getfileinfo "$i"; echo .; done
file: "/path/to/samples/20150728 - Source Fragment 3 (BAD).TXT"
type: "????"
creator: "????"
attributes: avbstclinmedz
created: 08/03/2015 13:58:18
modified: 08/03/2015 13:58:18
.
file: "/path/to/samples/20150728 - Source Framgent 1 (Good).TXT"
type: "TEXT"
creator: "
Mac:samples jjarava$ setfile -t TEXT "20150728 - Source Fragment 3 copy (BAD).TXT"
Mac:samples jjarava$ getfileinfo "20150728 - Source Fragment 3 copy (BAD).TXT"
file: "/path/to/samples/20150728 - Source Fragment 3 copy (BAD).TXT"
type: "TEXT"
creator: "????"
attributes: avbstclinmedz
created: 08/03/2015 13:58:18
modified: 08/03/2015 13:58:18
%pre%%pre%%pre%" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 . file: "/path/to/samples/20150728 - Source Framgent 2 (Good).TXT" type: "TEXT" creator: "%pre%%pre%%pre%%pre%" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 . file: "/path/to/samples/20150728 - Source (BAD).TXT" type: "????" creator: "????" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 . file: "/path/to/samples/20150728 - Source Fragment 3 copy (BAD).TXT" type: "????" creator: "????" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 .
%pre%%pre%" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 . file: "/path/to/samples/20150728 - Source Framgent 2 (Good).TXT" type: "TEXT" creator: "%pre%%pre%%pre%%pre%" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 . file: "/path/to/samples/20150728 - Source (BAD).TXT" type: "????" creator: "????" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 . file: "/path/to/samples/20150728 - Source Fragment 3 copy (BAD).TXT" type: "????" creator: "????" attributes: avbstclinmedz created: 08/03/2015 13:58:18 modified: 08/03/2015 13:58:18 .

Todos los archivos "de trabajo" son de type: "TEXT" , y todos los "no de trabajo" parecen no tener un "tipo" definido ...

En realidad, ejecuta lo siguiente para cambiar el archivo type :

%pre%

¡Y ese archivo ahora se puede seleccionar en el cuadro de diálogo "Abrir" en Excel!

La pregunta es de dónde viene el campo "tipo", y por qué está establecido en algunos archivos y no en otros, ¡¡pero al menos hay algo de "lógica" en el problema!

    
respondido por el JJarava 07.08.2015 - 16:55
0

Bueno, como muestra su captura de pantalla, son "casi", pero no completamente iguales; el archivo original es ASCII text, with CRLF line terminators mientras que las copias y los fragmentos que creó son ASCII text .

Alguna información de fondo: si piensa en una máquina de escribir antigua, para que las cosas sucedan, cuando el escritor comienza una nueva línea: el papel se "reenvía" una línea (= "avance de línea", LF) y el carro se mueve a la posición más a la izquierda (= "retorno de carro", CF). UNIX y OS X usan un solo carácter LF para hacer ambos en archivos de texto; Por otro lado, Windows usa dos caracteres, un CR y un LF, al final de cada línea.

Aparentemente, la función de importación de Excel no puede tratar con el archivo de texto "con formato de Windows"; TextWrangler, por otro lado, puede y, cuando manipula el archivo y guarda una copia, la guarda automáticamente en "formato UNIX", convirtiendo los CRLF en archivos LF. Su solución es decir lo que crea esos archivos en la máquina de Windows, guardarlos en formato UNIX o convertirlos en formato UNIX en OS X, antes de que pueda importarlos en Excel.

    
respondido por el FLIR31207 07.08.2015 - 14:29

Lea otras preguntas en las etiquetas