C'è un modo per importare un file csv in cui le intestazioni non iniziano dalla prima riga. Devi solo specificare su quale riga sono le intestazioni.
Ma diciamo che dopo aver fatto qualcosa con la tabella dei dati e voglio esportarla nello stesso formato, come lo farei? Diciamo che ho il testo, ed è solo una riga.
In modo che questo CSV in Excel assomigli a questo:

e in un blocco note appare così:

C'è un modo pulito per farlo esclusivamente in JSL?
Il modo in cui sto attualmente cercando di fare questo:
L'operazione opposta di lettura del file CSV che sto facendo leggendo CSV come file di testo in ex , capire dove iniziano le mie intestazioni (possono iniziare in punti diversi) e ottenere il numero di riga come headersPosizione , quindi facendo:
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
);Quindi, il mio piano attuale è quello di inserire la mia tabella di dati elaborati in un BLOB in qualche modo, quindi eseguire semplicemente la funzione Blob To Char () opposta e anteporre del testo e salvarlo come file CSV.
Sono bloccato nell'ottenere la tabella dei dati su blob, in modo da poterla ottenere su Char (che probabilmente non è il modo giusto), o in qualche modo ottenere la tabella dei dati in formato CSV come testo (non salvare come file).
In alternativa, posso salvarlo in un file CSV, quindi rileggere quel file come testo e anteporre una riga e salvarlo di nuovo (eliminando il file CSV temporaneo), ma sembra essere un modo molto imbarazzante per farlo.
Grazie,
M.
Ok, per ora ho risolto così:
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"));Esiste un modo più pulito senza salvare il file due volte? (Diciamo che sarà per più file che sono piuttosto grandi, quindi l'operazione di salvataggio extra è importante).
Potresti voler esaminare la lettura dell'intero file csv in una stringa di testo utilizzando
Carica file di testo()
È quindi possibile analizzare la variabile stringa per le informazioni desiderate.
Salva file di testo()
può quindi essere utilizzato per riscrivere il file sul disco rigido.
Jim,
Questo è esattamente quello che sto facendo nella mia soluzione attuale - vedi sopra.
Il problema è che devo anche manipolare i dati, quindi devo caricarli anche come tabella di dati.
Il problema è come ottenere la tabella dei dati in testo (in formato CSV)... Potevo solo salvare come CSV e poi caricarlo di nuovo come testo per inserire la stringa. Questo è un ciclo Save\Load in più di quanto spero di avere: diventa costoso quando ho più file di grandi dimensioni.
Credo che il tuo approccio specificato si rivelerà il più efficiente.
Grazie, voglio saperlo anch'io.