ヘッダーが最初の行からではなく始まる csv ファイルをインポートする方法があります。 ヘッダーが何行目にあるかを指定するだけです。
しかし、データ テーブルで何かを行った後で、それを同じ形式にエクスポートして戻したいとします。どうすればよいでしょうか? テキストが 1 行だけあるとします。
Excel の CSV は次のようになります。

メモ帳では次のようになります。

純粋にJSLでそれを行うきれいな方法はありますか?
私が現在これをやろうとしている方法:
CSV ファイルを読み取るのとは逆の操作を、CSV をテキスト ファイルとして読み込んで実行しています。元、ヘッダーがどこから始まるかを把握し(異なる場所で始まる可能性があります)、行番号を次のように取得します。ヘッダーの場所、次に次を実行します。
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
);したがって、私の現在の計画は、処理されたデータ テーブルを何らかの方法で BLOB に取得し、逆の Blob To Char() 関数を実行して先頭にテキストを追加し、CSV ファイルとして保存することです。
データテーブルをブロブに取得することにこだわって、それをCharに取得したり(これはおそらく正しい方法ではありません)、または何らかの方法でデータテーブルをテキストとしてCSV形式に取得したりできます(ファイルとして保存するのではありません)。
あるいは、CSV ファイルに保存し、そのファイルをテキストとして読み取って先頭に行を追加して、再度保存する (一時 CSV ファイルを削除する) こともできますが、これを行う方法は非常に厄介なようです。
ありがとう、
M.
さて、今のところ私は次の方法でそれを解決しました:
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"));ファイルを2回保存せずにもっときれいな方法はありますか? (それ自体がかなり大きい複数のファイルを対象とするとしましょう。そのため、追加の保存操作が重要になります)。
次を使用して CSV ファイル全体をテキスト文字列に読み込むことを検討するとよいでしょう。
テキストファイルをロード()
その後、文字列変数を解析して必要な情報を得ることができます。
テキストファイルを保存()
その後、ファイルをハード ドライブに書き戻すために使用できます。
ジム、
それはまさに私が現在のソリューションで行っていることです - 上記を参照してください。
問題は、データ操作も行う必要があるため、データテーブルとしてもロードする必要があることです。
問題は、データテーブルをテキスト(CSV形式)にどのように取得するかです... CSVとして保存し、文字列を挿入するためにテキストとして再度ロードすることしか思いつきませんでした。 これは、私が期待していたよりも保存/ロード サイクルが 1 回多くなります。複数の大きなファイルがある場合、コストが高くなります。
ご指定のアプローチが最も効率的であることが判明すると思います。