我正在尝试在excel中读取大(> 15MB)文件中的前几个字符。现在,我正在使用典型的:
Set MyObject = New Scripting.FileSystemObject
Set mySource = MyObject.GetFolder(mySourcePath)
For Each myFile In mySource.Files
With New Scripting.FileSystemObject
With .OpenTextFile(myFile, ForReading)
test_str = .ReadLine
'Do things
End With
End With
Next
问题在于大文件,我(相信)你只是为了读取前几个字符而将整个内容加载到内存中。有没有办法只提取前6个字符?
答案 0 :(得分:1)
An alternative to the FileSystemObject
would be ADO
但是,你的陈述
我(相信)你只是为了阅读而将整个内容加载到内存中 前几个字符。
错了。
我认为误导你的是你在阅读第一行后没有退出循环的事实。你可以通过逐行阅读得到你想要的东西,但你不是马上关闭文件。一个好的程序员练习总是关闭你在代码中启动的任何对象。不要只是让它悬挂,不要依赖环境 kill 它们。
考虑以下代码作为您的替代方案,看看是否存在任何效率差异
Option Explicit
' add references to Microsoft Scripting Runtime
' Tools >> References >> Microsoft Scripting Runtime
Sub Main()
Dim fileName As String
' make sure to update your path
fileName = "C:\Users\FoohBooh\Desktop\Project.txt"
ReadTxtFile fileName
End Sub
Sub ReadTxtFile(fileName)
Dim oFSO As New FileSystemObject
Dim oFS As TextStream
Set oFS = oFSO.OpenTextFile(fileName)
Dim content As String
content = oFS.ReadLine
With Sheets(1).Range("A1")
.ClearContents
.NumberFormat = "@"
.Value = content
End With
oFS.Close
Set oFS = Nothing
End Sub
上面的代码将.txt文件的第一行读入第一张表的单元格A1。请记住将fileName变量设置为完整路径。