@ChadNC También pensé en eso al seleccionar el delimitador que usaría mi código. La solución más fácil fue usar ;, que se reconoce automáticamente tanto en Ubuntu como en Windows, sin que yo tenga que dictar ninguna configuración específica.
gsamaras
Respuestas:
77
En Windows, depende de la pantalla de personalización "Opciones regionales y de idioma", donde encontrará un separador de lista. Este es el carácter que las aplicaciones de Windows esperan que sea el separador de CSV.
Por supuesto, esto solo tiene efecto en las aplicaciones de Windows, por ejemplo, Excel no dividirá automáticamente los datos en columnas si el archivo no usa el separador mencionado anteriormente. Todas las aplicaciones que utilizan la configuración regional de Windows tendrán este comportamiento.
Si está escribiendo un programa para Windows que requerirá importar el CSV en otras aplicaciones y sabe que el separador de lista establecido para sus máquinas de destino es ,, hágalo, de lo contrario, prefiero ;ya que causa menos problemas con puntos decimales, agrupación de dígitos y no aparece en mucho texto.
Este cambio también afectará la apertura de archivos CSV en Excel. Si desea hacer más compatible con el archivo CSV de Windows, colóquelo sep=;encima del archivo CSV.
papo
11
> "Yo prefiero, ya que causa menos problemas con los puntos decimales". Ésta es la solución incorrecta. Si su separador es una coma y el valor de una celda también contiene una coma, debe encerrar el valor entre comillas dobles. Por ejemplo: 111,222, "33,5", 444, "55,98", 666
Elmue
1
También es el caso de la aplicación Mac Numbers. Me estaba tirando de los pelos porque no podía hacer un csv que Photoshop reconociera. Cambié la opción de región a inglés de EE. UU. Y todo funcionó bien nuevamente
Tibidabo
21
Esa cosa regional es la cosa más estúpida que jamás se haya podido hacer. ¿Cómo se puede formatear de la csv ser diferente en las distintas regiones, esto significa que mis colegas no pueden abrir o guardar CSV para chicos con un PC en otra región .. oucch
Miguel
Si está programando en Co C++bajo Windows, puede usar la siguiente API para recuperar el delimitador de usuario o de todo el sistema:GetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
ahmd0
52
Yo diría que se ciñe a la coma, ya que es ampliamente reconocido y entendido. Sin embargo, asegúrese de citar sus valores y escapar de sus citas.
ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"
+1 para cubrir muchos escenarios csv con un ejemplo muy breve
Niels Brinch
1
La separación por comas por sí sola es buena, pero tiene problemas cuando obtiene campos que tienen comas. Aquí hay una buena referencia que encontré en el manual
Ibu
4
¡INCORRECTO! En mi máquina, si escribo un archivo CSV usando comas como separadores y lo abro en Excel, obtengo que toda la línea ocupe solo una columna. ¡Debe ser alguna configuración regional de Windows!
sergiol
2
@sergiol No estoy seguro de cómo eso invalida lo que dijeron.
E incluso antes de eso, la C en CSV siempre ha sido sinónimo de coma, no de semiColon :(
Es una pena que Microsoft siga ignorando eso y todavía se aferre a la monstruosidad en la que lo convirtieron hace décadas (sí, lo admito, eso fue antes de que se creara el RFC).
Un registro por línea, a menos que ocurra una nueva línea dentro del texto entre comillas (ver más abajo).
COMA como separador de columnas. Nunca un punto y coma.
PERIODO como punto decimal en números. Nunca una coma.
Texto que contiene comas, puntos y / o nuevas líneas entre "comillas dobles".
Solo si el texto está encerrado entre comillas dobles, dichas comillas en el texto no se duplican. Estos ejemplos representan los mismos tres campos:
1, "este texto contiene" "comillas" "", 3
1, este texto contiene "comillas", 3
El estándar no cubre los valores de fecha y hora, personalmente trato de ceñirme al formato ISO 8601 para evitar confusión día / mes / año - mes / día / año.
La monstruosidad nunca habría aparecido si se hubiera elegido el punto y coma en primer lugar. La coma no solo se usa para separadores de decimales o miles, sino también muy a menudo en el texto, a diferencia del punto y coma. El punto y coma hubiera sido una mejor opción porque es mucho más raro ...
AFract
14
Cuando dije monstruosidad, quise decir que Microsoft lo hizo dependiente del idioma. Excel abre archivos CSV y los trata como hojas de cálculo, y puede guardar hojas de cálculo en formato CSV, pero un archivo CSV guardado por Excel en los EE. UU. (Por ejemplo) no funcionará si alguien en Francia o Bélgica intenta abrirlo, y viceversa. Cualquiera que sea el estándar está bien para mí, siempre que haya un estándar que funcione para todos.
Luc VdV
4
"CSV es un formato estándar, descrito en RFC 4180 (en 2005), por lo que no hay falta de un estándar". Desafortunadamente, RFC 4180 es una solicitud de comentarios, NO un estándar. Dice justo en la parte superior: "no especifica un estándar de Internet de ningún tipo". Más tarde, dice que RFC 4180 "documenta el formato que parece ser seguido por la mayoría de las implementaciones". Parece que fue creado por una pequeña empresa privada, no asociada con ningún organismo de norma. Es un excelente punto de partida, pero desafortunadamente hay muchos archivos CSV en la naturaleza que no siguen este "estándar".
Jim Rea
9
TODOS los estándares de Internet se denominan RFC.
Luc VdV
2
Pero cuando son estándar, no afirman que no pretenden ser normativas. En cambio, tienen una serie de secciones normativas dentro, que no es el caso de RFC 4180.
Frédéric
42
También relevante, pero especialmente para sobresalir, mire esta respuesta y esta otra que sugiere, insertando una línea al comienzo del CSV con
Inicialmente iba a ser una coma, sin embargo, como la coma se usa a menudo como un punto decimal, no sería un buen separador, por lo tanto, otros como el punto y coma, en su mayoría dependientes del país.
Esa sección del artículo de Wikipedia desapareció. Es posible que desee volver a vincular a en.wikipedia.org/wiki/Comma-separated_values#Basic_rules . Esto tiene un pasaje sobre las configuraciones regionales:> " Los campos adyacentes deben estar separados por una sola coma. Sin embargo, los formatos" CSV "varían mucho en esta opción de carácter separador. En particular, en las configuraciones regionales donde se usa la coma como separador decimal, en su lugar se usa punto y coma, TAB u otros caracteres ".
Jules Kerssemakers
4
CSV es un archivo separado por comas. Generalmente, el delimitador es una coma, pero he visto muchos otros caracteres utilizados como delimitadores. Simplemente no se utilizan con tanta frecuencia.
En cuanto a aconsejarle sobre qué utilizar, necesitamos conocer su aplicación. ¿Es el archivo específico para su aplicación / programa, o es necesario que funcione con otros programas?
Creo que en Europa el; es frecuente. Sobre todo porque tenemos comas en números como 60,00 €.
ofrece
5
@oers No debería importar siempre y cuando sean "quote"sus valores.
adarshr
Bueno, vi principalmente otros delimitadores utilizados en archivos de semillas de red, ¡pero el dinero europeo también funciona!
Youssef G.
4
Para cambiar la coma a punto y coma como el separador de Excel predeterminado para CSV, vaya a Región -> Configuración adicional -> pestaña Números -> Separador de lista y escriba; en lugar del predeterminado,
Si su configuración regional está configurada con un ,separador decimal y exporta un archivo con columnas separadas por ,cuando lo abre en Excel, el texto aparecerá en SOLO UNA columna. En Excel 2013, seleccione la primera columna, vaya a DATOS -> Texto a columnas -> Elegir Delimited, haga clic y Nextluego elija solo Commaen Delimitersy verá los cambios inmediatamente en Data previewy finalmente haga clic enFinish
sergiol
2
Bueno, para decir algo sobre el punto y coma. En muchos países, la coma es lo que se usa para decimal, no punto. La mayoría de las colonias de la UE, que consisten en la mitad del mundo, la otra mitad sigue el estándar del Reino Unido (cómo diablos el Reino Unido es tan grande O_O), por lo que, a su vez, el uso de una coma para la base de datos que incluye el número crea gran parte del dolor de cabeza porque Excel se niega a reconocerlo como delimitador. .
Del mismo modo, en mi país, Vietnam, siga el estándar de Francia, nuestro socio HongKong usa el estándar del Reino Unido, por lo que la coma inutiliza CSV y usamos \ to; en su lugar para uso internacional, pero aún no es "estándar" según el documento CSV.
La mejor manera será guardarlo en un archivo de texto con extensión csv:
Sub ExportToCSV()
Dim i, j As Integer
Dim Name As String
Dim pathfile As String
Dim fs As Object
Dim stream As Object
Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fileexists
i = 15
Name = Format(Now(), "ddmmyyHHmmss")
pathfile = "D:\1\" & Name & ".csv"
Set stream = fs.CreateTextFile(pathfile, False, True)
El archivo existe:
If Err.Number = 58 Then
MsgBox "File already Exists"
'Your code here
Return
End If
On Error GoTo 0
j = 1
Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)
stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))
j = j + 1
i = i + 1
Loop
stream.Close
End Sub
;
, que se reconoce automáticamente tanto en Ubuntu como en Windows, sin que yo tenga que dictar ninguna configuración específica.Respuestas:
En Windows, depende de la pantalla de personalización "Opciones regionales y de idioma", donde encontrará un separador de lista. Este es el carácter que las aplicaciones de Windows esperan que sea el separador de CSV.
Por supuesto, esto solo tiene efecto en las aplicaciones de Windows, por ejemplo, Excel no dividirá automáticamente los datos en columnas si el archivo no usa el separador mencionado anteriormente. Todas las aplicaciones que utilizan la configuración regional de Windows tendrán este comportamiento.
Si está escribiendo un programa para Windows que requerirá importar el CSV en otras aplicaciones y sabe que el separador de lista establecido para sus máquinas de destino es
,
, hágalo, de lo contrario, prefiero;
ya que causa menos problemas con puntos decimales, agrupación de dígitos y no aparece en mucho texto.fuente
sep=;
encima del archivo CSV.C
oC++
bajo Windows, puede usar la siguiente API para recuperar el delimitador de usuario o de todo el sistema:GetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
Yo diría que se ciñe a la coma, ya que es ampliamente reconocido y entendido. Sin embargo, asegúrese de citar sus valores y escapar de sus citas.
fuente
CSV es un formato estándar, descrito en RFC 4180 (en 2005), por lo que no hay falta de un estándar. https://www.ietf.org/rfc/rfc4180.txt
E incluso antes de eso, la C en CSV siempre ha sido sinónimo de coma, no de semiColon :(
Es una pena que Microsoft siga ignorando eso y todavía se aferre a la monstruosidad en la que lo convirtieron hace décadas (sí, lo admito, eso fue antes de que se creara el RFC).
Solo si el texto está encerrado entre comillas dobles, dichas comillas en el texto no se duplican. Estos ejemplos representan los mismos tres campos:
1, "este texto contiene" "comillas" "", 3
1, este texto contiene "comillas", 3
El estándar no cubre los valores de fecha y hora, personalmente trato de ceñirme al formato ISO 8601 para evitar confusión día / mes / año - mes / día / año.
fuente
También relevante, pero especialmente para sobresalir, mire esta respuesta y esta otra que sugiere, insertando una línea al comienzo del CSV con
Para informar a Excel qué separador esperar
fuente
1.> Cambiar el formato de archivo a .CSV (delimitado por punto y coma)
Para lograr el resultado deseado, necesitamos cambiar temporalmente la
delimiter
configuración en lasExcel
Opciones:Desmarque la opción "Usar separadores del sistema" y coloque una coma en el campo "Separador decimal".
Ahora guarde el archivo en el
.CSV
formato y se guardará en el formato delimitado por punto y coma.fuente
Inicialmente iba a ser una coma, sin embargo, como la coma se usa a menudo como un punto decimal, no sería un buen separador, por lo tanto, otros como el punto y coma, en su mayoría dependientes del país.
http://en.wikipedia.org/wiki/Comma-separated_values#Lack_of_a_standard
fuente
CSV es un archivo separado por comas. Generalmente, el delimitador es una coma, pero he visto muchos otros caracteres utilizados como delimitadores. Simplemente no se utilizan con tanta frecuencia.
En cuanto a aconsejarle sobre qué utilizar, necesitamos conocer su aplicación. ¿Es el archivo específico para su aplicación / programa, o es necesario que funcione con otros programas?
fuente
"quote"
sus valores.Para cambiar la coma a punto y coma como el separador de Excel predeterminado para CSV, vaya a Región -> Configuración adicional -> pestaña Números -> Separador de lista y escriba; en lugar del predeterminado,
fuente
,
separador decimal y exporta un archivo con columnas separadas por,
cuando lo abre en Excel, el texto aparecerá en SOLO UNA columna. En Excel 2013, seleccione la primera columna, vaya a DATOS -> Texto a columnas -> ElegirDelimited
, haga clic yNext
luego elija soloComma
enDelimiters
y verá los cambios inmediatamente enData preview
y finalmente haga clic enFinish
Bueno, para decir algo sobre el punto y coma. En muchos países, la coma es lo que se usa para decimal, no punto. La mayoría de las colonias de la UE, que consisten en la mitad del mundo, la otra mitad sigue el estándar del Reino Unido (cómo diablos el Reino Unido es tan grande O_O), por lo que, a su vez, el uso de una coma para la base de datos que incluye el número crea gran parte del dolor de cabeza porque Excel se niega a reconocerlo como delimitador. .
Del mismo modo, en mi país, Vietnam, siga el estándar de Francia, nuestro socio HongKong usa el estándar del Reino Unido, por lo que la coma inutiliza CSV y usamos \ to; en su lugar para uso internacional, pero aún no es "estándar" según el documento CSV.
fuente
La mejor manera será guardarlo en un archivo de texto con extensión csv:
El archivo existe:
fuente