Guardar un archivo en un tipo CSV en Excel siempre elimina la lista de materiales

15

He estado tratando de encontrar una solución / explicación razonable (sin éxito) para averiguar por qué Excel omite la BOM al guardar un archivo en el tipo CSV.

Perdóname si encuentras esto como un duplicado de esta pregunta. Esto maneja la lectura de archivos CSV con codificación no ASCII, pero no cubre guardar el archivo nuevamente (que es donde radica el mayor problema).

Aquí está mi situación actual (que voy a reunir es común entre el software localizado que trata con caracteres Unicode y un formato CSV):

  • Exportamos datos a un formato CSV usando UTF-16LE, asegurando que la lista de materiales esté configurada (0xFFFE). Validamos después de que el archivo se genera con un editor Hex para asegurarnos de que se configuró correctamente.

  • Abra el archivo en Excel (para este ejemplo estamos exportando caracteres japoneses) y sea testigo de que Excel maneja cargar el archivo con la codificación correcta.

  • Los intentos de guardar este archivo le indicarán un mensaje de advertencia que indica que el archivo puede contener características que pueden no ser compatibles con la codificación Unicode, pero le pregunta si desea guardar de todos modos.

  • Si selecciona el cuadro de diálogo Guardar como, inmediatamente le pedirá que guarde el archivo como "Texto Unicode" en lugar de CSV. Si selecciona la extensión "CSV" y guarda el archivo, elimina la lista de materiales (obviamente, junto con todos los caracteres japoneses).

¿Por qué sucedería esto? ¿Existe una solución a este problema o se trata de un 'error' / limitación conocido de Excel?

Además (como un problema secundario) parece que Excel, al cargar archivos CSV codificados UTF-16LE, solo usa delimitadores TAB. De nuevo, ¿es este otro 'error' / limitación conocido de Excel?

rickp
fuente

Respuestas:

6

No hay respuestas educadas a las preguntas del formulario "¿Por qué Excel hace X?".

¿Por qué no adoptas "Guardar como texto Unicode" como formato de transferencia estándar? Excel Save as asegura que hay una lista de materiales, usa TAB como delimitador, cita campos como CSV ...

Por cierto, no "selecciona la extensión CSV". Tiene DOS opciones: formato y extensión. Intente guardar como texto unicode en el cuadro 'Guardar como tipo' y cambie manualmente la extensión en el cuadro 'Nombre de archivo' a csv. Luego salga de Excel y haga doble clic en el nombre del archivo en el Explorador de Windows. Se abre bien. Intentalo.

Actualización para discutir los comentarios de OP :

  • "Guardar como texto Unicode" (en Excel 2007) siempre guardará su archivo como una extensión de texto (no puedo hablar de versiones anteriores o más recientes). Esa es la idea de "Guardar como tipo" ...

=> Lea atentamente lo que escribí anteriormente y pruébelo usted mismo. Siempre guardará su archivo con una extensión TXT a menos que lo anule : elimine el txten el cuadro 'Nombre de archivo' y escriba csv.

  • Para aclarar su "Guardar Excel como asegurar que hay una lista de materiales", es incorrecto.

=> "Guardar como texto Unicode " asegura que haya una lista de materiales UTF-16LE al frente del archivo. Pruébalo y verás.

  • ¡Esta es la razón por la que hice una pregunta en primer lugar! Si abro un archivo con formato CSV que contiene una lista de materiales para indicar que mi codificación de archivo es UFT-16LE y modifico este archivo a través de Excel, espero que cuando guarde este archivo la codificación permanezca intacta ...

=> y sus expectativas no se cumplen, porque Excel no retiene ninguna información sobre los archivos CSV de entrada. No hay forma de obligarlo a hacer lo que quieres hacer. Entonces te rindes o intentas otra cosa, como lo que estoy sugiriendo.

  • Lo que sería realmente bueno es que alguien que haya experimentado estos problemas antes, proporcione su visión por favor.

=> He experimentado estos problemas, con datos chinos y Excel 1997, hace años. Antes de responder a su pregunta, verifiqué con Excel 2003 y Excel 2007 que Excel todavía se está comportando mal. Verifiqué que la solución "guardar como tipo = texto Unicode, extensión = CSV" realmente funciona. He proporcionado mis ideas.

John Machin
fuente
1
"Guardar como texto Unicode" (en Excel 2007) siempre guardará su archivo como una extensión de texto (no puedo hablar de versiones anteriores o más recientes). Esa es la idea de "Guardar como tipo" ... Para aclarar su "Guardar Excel como asegurar que hay una lista de materiales", es incorrecto. ¡Esta es la razón por la que hice una pregunta en primer lugar! Si abro un archivo con formato CSV que contiene una lista de materiales para indicar que mi codificación de archivo es UFT-16LE y modifico este archivo a través de Excel, espero que cuando guarde este archivo la codificación permanezca intacta ... Lo que sería realmente bueno es alguien ¿Quién ha experimentado estos problemas antes? Proporcione su visión por favor.