0

我有一个连续有 5 个值的 .CSV 文件,我想以某种方式修改文件,我应该在行的开头/结尾/中间添加一个值。

如何在 .CSV 文件中添加具有一组值的新行?

如何以简单的方式做到这一点?

4

3 回答 3

1

没有什么神奇的方法可以将内容插入流文件(例如任何文本文件,包括 CSV 文件)的中间。

因此,这意味着您需要读取旧文件并在写入新文件时对其进行修改。

虽然有很多方法可以做到这一点:

  • 将输入文件作为 blob 读入内存并在那里处理,然后写出修改后的数据。
  • 逐行读取/写入更改。
  • 使用 Jet Text IISAM、Log Parser 的 COM API 等,允许对 CSV 等表格格式的文本数据进行 SQL 和类似 SQL 的操作。

最简单和最通用的方法是逐行读取/修改/写入。对于中小型文件,这可能比“blob”方法慢,但不会冒在必须处理大文件时可能导致的头痛的风险。

对于非常大的文件,这可以通过读取、解析、修改然后写入“块”来优化,以最小化 I/O 成本。但这也可能更复杂,无法正确编程。

于 2013-01-10T13:26:11.050 回答
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 回答
0

fso需要关闭!

Set fso = Nothing

于 2013-09-27T03:48:42.647 回答