我尝试使用 ADODB 只读取大型 utf8 文件的第一行。
出于我的目的,我只需要 csv 中第一行的值(具有表格的标题)
Public Sub stream()
Fullpath = "path to File"
Set stream = CreateObject("ADODB.Stream")
stream.Charset = "utf-8"
stream.Open
stream.LoadFromFile Fullpath
txt=stream.ReadText (-2) 'read only one line
End Sub
当涉及到行流时。ReadText excel 冻结。 (文件约400MB)
知道如何只读取大文件的第一行吗?
只是一个猜测,但这可能是行结束定义的问题。如果 CSV 是在 Unix/Linux 机器上编写的,则它可能只有
<LF>
作为行结束符。如果它来自 Mac,通常只有 <CR>
。
现在,如果您打开流,它将读取数据,直到找到第一行结尾。在 Windows 上,默认值为
<CR><LF>
- 但是,如果 CSV 文件中的行结尾仅是 <CR>
或 <LF>
,则流将永远找不到行结尾,因此将读取整个文件。
您可以更改以流的属性
LineSeparator
结尾的预期行。
stream.LineSeparator = adCR
或
stream.LineSeparator = adLF
或
stream.LineSeparator = adCRLF
由于您使用的是后期绑定,常量可能未定义,因此请在代码顶部添加声明:
Const adCR = 13
Const adLF = 10
Const adCRLF = -1