Hay una manera de importar un archivo csv donde los encabezados no comienzan desde la primera línea. Simplemente especifica en qué línea están los encabezados.
Pero digamos que después de hacer algo con la tabla de datos y quiero exportarla de nuevo al mismo formato, ¿cómo lo haría? Digamos que tengo el texto, y es solo una línea.
Para que este CSV en Excel se vea así:

y en un Bloc de notas se ve así:

¿Hay una forma limpia de hacerlo puramente en JSL?
La forma en que estoy tratando de hacer esto actualmente:
La operación opuesta de leer el archivo CSV que estoy haciendo al leer CSV como un archivo de texto en ex , averiguar dónde comienzan mis encabezados (pueden comenzar en diferentes lugares) y obtener el número de línea como encabezadosUbicación , luego haciendo:
dtInt_ = Open(
Char To Blob( ex ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( headersLocation ),
Data Starts( headersLocation + 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
),
Invisible
);Entonces, mi plan actual es convertir mi tabla de datos procesados en un BLOB de alguna manera, y luego simplemente hacer la función opuesta Blob To Char() y agregarle un texto y guardarlo como un archivo CSV.
Estoy atascado en obtener la tabla de datos en blob, para poder llevarla a Char (que probablemente no sea la forma correcta), o de alguna manera obtener la tabla de datos en formato CSV como texto (no guardar como un archivo).
Alternativamente, puedo guardarlo en un archivo CSV, luego volver a leer ese archivo como texto y anteponer una línea y guardarlo nuevamente (eliminando el archivo CSV temporal), pero parece ser una forma muy incómoda de hacerlo.
Gracias,
METRO.
Ok, por ahora lo resolví de esta manera:
dt = Current Data Table();
filePath = "C:\TEMP\test.csv";
dt << Save(filePath);
dt_text = Load Text File(filePath);
out = "Custom Line \!n"||dt_text;
Save Text File(filePath, out, mode("Replace"));¿Hay una forma más limpia sin guardar el archivo dos veces? (Digamos que va a ser para varios archivos que son bastante grandes, por lo que la operación de guardado adicional es importante).
Es posible que desee leer todo el archivo csv en una cadena de texto usando
Cargar archivo de texto()
A continuación, puede analizar la variable de cadena para obtener la información que desea.
Guardar archivo de texto()
luego se puede usar para volver a escribir el archivo en su disco duro.
Jim,
Eso es exactamente lo que estoy haciendo en mi solución actual; consulte más arriba.
El problema es que también necesito manipular algunos datos, por lo que también necesito cargarlo como una tabla de datos.
El problema es cómo convertir la tabla de datos en texto (en formato CSV)... Solo pude pensar en guardar como CSV y luego cargarlo nuevamente como texto para insertar la cadena. Este es un ciclo Save\Load más de lo que espero tener; se vuelve costoso cuando tengo varios archivos grandes.
Creo que su enfoque especificado resultará ser el más eficiente.
Gracias, yo también quiero saberlo.