0

行に 5 つの値を持つ .CSV ファイルがあります。行の先頭/末尾/中間にもう 1 つの値を追加するようにファイルを変更したいと考えています。

.CSV ファイルに一連の値を含む新しい行を追加する方法は?

これを簡単な方法で行うにはどうすればよいですか?

4

3 に答える 3

1

このコードは役立つかもしれませんが、これは答えではありませんが、役立つでしょう

Dim line As String
Dim arrayOfElements() As String
Dim linenumber As Integer
Dim i As Integer
Dim opLine As String
Dim fso As New FileSystemObject
Dim ts As TextStream

line = ""

Open strPath For Input As #1 ' Open file for input
    Do While Not EOF(1) ' Loop until end of file
        linenumber = linenumber + 1
        Line Input #1, line
        arrayOfElements = Split(line, "|")
       If Not linenumber = 1 Then
            If UBound(arrayOfElements) = 2 Then
               line = line & "|x|y"
               opLine = opLine & line & vbCrLf
            End If
        Else
        line = line & "|col4|col5"
         opLine = opLine & line & vbCrLf
       End If

ループ

Close #1 ' Close file.
Set ts = fso.CreateTextFile(strPath, True)
ts.WriteLine (opLine)
ts.Close
于 2013-01-21T08:28:56.283 に答える
1

ストリーム ファイル (CSV ファイルを含むテキスト ファイルなど) の途中に何かを挿入する魔法の方法はありません。

したがって、これは、新しいファイルを書き出すときに、古いファイルを読み取って変更する必要があることを意味します。

ただし、これを行うには多くの方法があります。

  • 入力ファイルを BLOB としてメモリに読み込み、そこで作業してから、変更されたデータを書き出します。
  • 行ごとに変更して読み書きします。
  • Jet Text IISAM、Log Parser の COM API などを使用して、CSV などの表形式のテキスト データに対して SQL および SQL に似た操作を行うことができます。

最も単純で一般的な方法は、行ごとの読み取り/変更/書き込みです。これは、小さいファイルから中程度のファイルの「ブロブ」アプローチよりも遅くなる可能性がありますが、大きなファイルを処理する必要がある場合に発生する可能性のある頭痛のリスクはありません。

非常に大きなファイルの場合、I/O コストを最小限に抑えるために、読み取り、解析、変更、および「チャンク」への書き込みによって最適化できます。しかし、これは正しくプログラムするのがより複雑になる可能性もあります。

于 2013-01-10T13:26:11.050 に答える
0

fso を閉じる必要があります。

Set fso = Nothing

于 2013-09-27T03:48:42.647 に答える