¿Cómo se crea un archivo CSV en general? ¿Con comas o punto y coma? ¿Algún consejo sobre cuál usar?
;, que se reconoce automáticamente tanto en Ubuntu como en Windows, sin que yo tenga que dictar ninguna configuración específica.
¿Cómo se crea un archivo CSV en general? ¿Con comas o punto y coma? ¿Algún consejo sobre cuál usar?
;, 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.
sep=;encima del archivo CSV.
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));
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"
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.
También relevante, pero especialmente para sobresalir, mire esta respuesta y esta otra que sugiere, insertando una línea al comienzo del CSV con
"sep=,"
Para informar a Excel qué separador esperar
1.> Cambiar el formato de archivo a .CSV (delimitado por punto y coma)
Para lograr el resultado deseado, necesitamos cambiar temporalmente la delimiterconfiguración en las ExcelOpciones:
Move to File -> Options -> Advanced -> Editing Section
Desmarque la opción "Usar separadores del sistema" y coloque una coma en el campo "Separador decimal".
Ahora guarde el archivo en el .CSVformato y se guardará en el formato delimitado por punto y coma.
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
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?
"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,
,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
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