Sé que esta es una vieja pregunta, pero el problema no desaparecerá pronto. Los archivos CSV son fáciles de generar desde la mayoría de los lenguajes de programación, más bien pequeños, legibles por humanos en un momento crucial con un editor de texto plano y ubicuos.
El problema no es solo con las fechas en los campos de texto, sino que cualquier cosa numérica también se convierte de texto a números. Un par de ejemplos donde esto es problemático:
- ZIP / códigos postales
- números telefónicos
- números de identificación del gobierno
que a veces puede comenzar con uno o más ceros (0), que se desechan cuando se convierten en numéricos. O el valor contiene caracteres que pueden confundirse con operadores matemáticos (como en fechas: /, -).
Dos casos en los que puedo pensar que la solución "prepending =", como se mencionó anteriormente, podría no ser ideal es
- donde el archivo puede importarse a un programa que no sea MS Excel (viene a la mente la función de Combinar correspondencia de MS Word),
- donde la legibilidad humana puede ser importante.
Mi truco para evitar esto
Si uno pre / agrega un carácter no numérico y / o no fecha en el valor, el valor se reconocerá como texto y no se convertirá. Un carácter que no se imprima sería bueno ya que no alterará el valor mostrado. Sin embargo, el carácter de espacio antiguo simple (\ s, ASCII 32) no funciona para esto, ya que Excel lo corta y luego el valor aún se convierte. Pero hay varios otros caracteres de espacio de impresión y no impresión que funcionarán bien. Sin embargo, lo más fácil es agregar (agregar después) el carácter de tabulación simple (\ t, ASCII 9).
Beneficios de este enfoque:
- Disponible desde el teclado o con un código ASCII fácil de recordar (9),
- No molesta la importación,
- Normalmente no molesta los resultados de la combinación de correspondencia (dependiendo del diseño de la plantilla, pero normalmente solo agrega un amplio espacio al final de una línea). (Sin embargo, si esto es un problema, observe otros caracteres, por ejemplo, el espacio de ancho cero (ZWSP, Unicode U + 200B)
- no es un gran obstáculo al ver el CSV en el Bloc de notas (etc.),
- y podría eliminarse mediante buscar / reemplazar en Excel (o Bloc de notas, etc.).
- No necesita importar el CSV, pero simplemente puede hacer doble clic para abrir el CSV en Excel.
Si hay una razón por la que no desea usar la pestaña, busque en otra tabla Unicode algo más adecuado.
Otra opción
podría ser generar archivos XML, para los cuales un cierto formato también es aceptado para la importación por las nuevas versiones de MS Excel, y que permite muchas más opciones similares al formato .XLS, pero no tengo experiencia con esto.
Entonces hay varias opciones. Dependiendo de sus requisitos / aplicación, uno podría ser mejor que otro.
Adición
Es necesario decir que las versiones más nuevas (2013+) de MS Excel ya no abren el CSV en formato de hoja de cálculo: una aceleración más en el flujo de trabajo que hace que Excel sea menos útil ... Al menos, existen instrucciones para evitarlo. Consulte, por ejemplo, este Stackoverflow: ¿Cómo mostrar correctamente los archivos .csv en Excel 2013?
.