delimitado - convertir excel a csv separado por punto y coma
CSV for Excel, incluidos los ceros líderes y las comas (12)
Como nadie lo mencionó, pensó que valía la pena mencionarlo en esta publicación anterior.
Si agrega un carácter de tabulador horizontal /t
antes del número, MS Excel también mostrará los ceros a la izquierda. Y el carácter de tabulación no se muestra en la hoja de Excel. Incluso si está rodeado de comillas dobles. (Fe /"/t001,002/"
)
También se ve mejor en Notepad ++, en comparación con poner un /0
aka NULL antes de ese número.
Quiero generar un archivo CSV para que el usuario use Excel para abrirlo.
Si quiero escapar de la coma en valores, puedo escribirlo como "640,480".
Si quiero mantener los ceros a la izquierda, puedo usar = "001234".
Pero si quiero mantener tanto la coma como los ceros a la izquierda en el valor, escribir como = "001,002" se dividirá en dos columnas. Parece que no hay solución para expresar los datos correctos.
¿Hay alguna manera de expresar 001, 002 en CSV para Excel?
Estaba jugando con CSV a Excel (uso PHP para crear el archivo CSV, pero supongo que esta solución funciona para cualquier idioma. Cuando ve que los caracteres principales (como +, - o 0 están desapareciendo), cree el chr(13)
CSV con chr(13)
como prefijo. Este es un carácter no imprimible y funciona de maravilla para mi versión de Excel Office 2010. Probé otros caracteres no imprimibles, pero sin suerte.
así que uso la solución Chirp Internet, pero modificada con mi prefijo:
if (preg_match("/^0/", $str) || preg_match("/^/+?/d{8,}$/", $str) || preg_match("/^/d{4}./d{1,2}./d{1,2}/", $str)) {
$str = chr(13)."$str";
}
Excel utiliza un formato predeterminado para columnas CSV según el contenido. Entonces, si tiene 001 en una csv, Excel automáticamente lo convertirá en 1.
La única forma de mantener los ceros a la izquierda en Excel desde un archivo csv es cambiando la extensión del archivo csv a .txt, luego solo abre Excel, haz clic en abrir, selecciona el archivo txt y verás el Asistente de importación de texto . Seleccione su formato csv (separado por comas), luego solo asegúrese de seleccionar "Texto" como formato.
Y eso es todo, ahora puede exportar los datos csv anteriores a cualquier otro manteniendo los ceros a la izquierda.
Hacer
"""001,002"""
Descubrí esto escribiendo "001,002" y luego haciendo save-as CSV en Excel. Si esto no es exactamente lo que quiere (no desea cotizaciones), esta podría ser una buena forma de encontrar lo que desea.
Otra opción podría ser usar texto delimitado por tabuladores, si esta es una opción para usted.
La respuesta de Kent Fredric contiene la solución:
"=""001,002"""
(Me molesto en publicar esto como una respuesta separada porque no está claro por la respuesta de Kent que es una solución de Excel válida).
Mirando más a la hoja de cálculo de Excel, parece que lo que quieres no se puede hacer usando CSV.
Este sitio http://office.microsoft.com/en-us/excel/HP052002731033.aspx dice "Si las celdas muestran fórmulas en lugar de valores de fórmula, las fórmulas se convierten como texto. Todo el formato, gráficos, objetos y otros contenidos de la hoja de trabajo. se pierden. El símbolo del euro se convertirá en un signo de interrogación ".
Sin embargo, puede cambiar la forma de cargarlo para obtener el resultado que desea. Vea esta página web: http://office.microsoft.com/en-us/excel/HP052002731033.aspx .
La clave es elegir Importar Datos Externos-Importar Archivos de Texto-Datos, ir a Siguiente, Siguiente, y luego marcar "Texto" en formato de datos de columna. Esto evitará que se interprete como un número y perderá el formato.
Pon un prefijo String en tus datos:
"N001,002","N002,003"
(Siempre que ese prefijo no sea una E)
Esa notación (al menos en OpenOffice) analiza como un total de 2 columnas con los N001,002 bytes almacenados correctamente.
La especificación de CSV dice que, está permitido dentro de cadenas de comillas.
Además, una advertencia por experiencia: asegúrese de hacer esto también con los números de teléfono. Excel interpretará los números de teléfono como un número flotante y los guardará en notación científica: / y 1.800E10 no es un número de teléfono realmente bueno.
En OpenOffice, este fragmento RawCSV también se decodifica como se esperaba:
"=""001,002""","=""002,004"""
es decir:
$rawdata = ''001,002'';
$equation = "=/"$rawdata/"";
$escaped = str_replace(''"'',''""'',$equation);
$csv_chunk = "/"$escaped/"" ;
Si está utilizando "Content-Disposition" y exportando de asp a Excel usando etiquetas HTML, entonces tiene que agregar "style = ''mso-number-format: / @;''" a esa etiqueta y hacer que acepte solo valores de texto , por lo tanto, se evitará la omisión de ceros, si se acepta la barra diagonal "/", utilice la barra diagonal doble "/"
Todas las respuestas sugeridas no parecen funcionar para mí en este momento ("=" "blahblah" "" y otros) en todas las versiones actuales de Excel o la aplicación Numbers en OS X.
La única solución que encontré que estaba trabajando es poner un carácter nulo al comienzo de la cadena (que es / 0 en PHP o C). Todo termina tratado como está sin que el software lo calcule o lo procese al abrir la hoja de cálculo.
echo "/0" . $data;
Un hilo bastante antiguo, pero ¿por qué no agregas espacios en blanco después de tu valor? Luego se tratará como una cadena y no se eliminarán los ceros iniciales.
"001,002". ""
Un lector de mi blog encontró una solución, = "001" y CHAR (44) y "002", parece viable en mi máquina.