Il existe un moyen d'importer un fichier csv où les en-têtes ne commencent pas à partir de la première ligne. Vous venez de spécifier sur quelle ligne les en-têtes sont.
Mais disons qu'après avoir fait quelque chose avec la table de données et que je souhaite la réexporter dans le même format, comment ferais-je cela ? Disons que j'ai le texte, et ce n'est qu'une ligne.
Pour que ce CSV dans Excel ressemble à ceci :

et dans un bloc-notes, cela ressemble à ceci :

Existe-t-il un moyen propre de le faire uniquement en JSL?
La façon dont j'essaie actuellement de faire ceci:
L'opération opposée de lecture du fichier CSV que je fais en lisant CSV en tant que fichier texte dans ex , déterminer où mes en-têtes commencent (ils peuvent commencer à différents endroits) et obtenir le numéro de ligne comme en-têtesEmplacement , puis en faisant :
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
);Donc, mon plan actuel est d'obtenir ma table de données traitées dans un BLOB d'une manière ou d'une autre, puis de faire la fonction opposée Blob To Char() et d'y ajouter du texte et de l'enregistrer en tant que fichier CSV.
Je suis obligé d'obtenir la table de données sur blob, afin que je puisse l'obtenir sur Char (ce qui n'est probablement pas le bon moyen), ou d'une manière ou d'une autre obtenir la table de données au format CSV sous forme de texte (pas enregistrer en tant que fichier).
Alternativement, je peux l'enregistrer dans un fichier CSV, puis relire ce fichier sous forme de texte et ajouter une ligne et l'enregistrer à nouveau (en supprimant le fichier CSV temporaire) - mais cela semble être une façon très délicate de le faire.
Merci,
M
Ok, pour l'instant je l'ai résolu de cette façon:
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"));Existe-t-il un moyen plus propre sans enregistrer le fichier deux fois ? (Disons que ce sera pour plusieurs fichiers qui sont eux-mêmes assez volumineux - donc une opération de sauvegarde supplémentaire est importante).
Vous voudrez peut-être envisager de lire l'intégralité du fichier csv dans une chaîne de texte en utilisant
Charger le fichier texte()
Vous pouvez ensuite analyser la variable de chaîne pour les informations souhaitées.
Enregistrer le fichier texte()
peut ensuite être utilisé pour réécrire le fichier sur votre disque dur.
Jim,
C'est exactement ce que je fais dans ma solution actuelle - voir ci-dessus.
Le problème est que je dois également faire quelques manipulations de données - donc je dois également le charger en tant que table de données.
Le problème est de savoir comment obtenir la table de données en texte (au format CSV) ... Je ne pouvais que sauvegarder au format CSV, puis le charger à nouveau sous forme de texte afin d'insérer la chaîne. C'est un cycle Save\Load de plus que ce que j'espérais avoir - cela devient coûteux lorsque j'ai plusieurs fichiers volumineux.
Je crois que votre approche spécifiée s'avérera la plus efficace.
Merci, je veux aussi le savoir.