如何在不打开的情况下从 CSV 文件中检索数据

Posted

技术标签:

【中文标题】如何在不打开的情况下从 CSV 文件中检索数据【英文标题】:How to retrieve data from a CSV file w/o opening it 【发布时间】:2014-04-16 03:24:10 【问题描述】:

有什么方法可以在不打开 CSV 文件的情况下将数据从 csv 文件检索到 excel 工作表中?我在 Windows PC 上工作。 Excel 表和 CSV 文件在一个文件夹中。我还运行了一个程序,它不断更新 CSV 文件中的数据。如果我直接打开 CSV 文件,那么程序将停止运行。所以我需要一个替代解决方案来从 CSV 文件中读取数据而不打开它。任何帮助将不胜感激!

【问题讨论】:

显然你不能在不使用文件的情况下使用文件。你可以例如制作文件副本并打开它。如果没有明确可用的语言和技术,似乎无法回答。 参见***.com/questions/22957451/… - 您可以通过 VBA 以只读方式打开 csv 文件 【参考方案1】:

如果我理解正确,您希望读取 CAV 文件而不锁定它,以便您的其他进程可以继续写入。

这可以通过FileSystemObject实现

Sub Demo()
    Dim fso As FileSystemObject
    Dim txt As TextStream
    Dim s As String
    On Error GoTo EH

    Set fso = New FileSystemObject
    Set txt = fso.OpenTextFile("C:\Your\Path\YourFile.csv", ForReading)

打开文件ForReading 不会锁定它,你的其他进程可以继续写入它。您现在可以使用

读取它
    Do While Not txt.AtEndOfStream
        s = txt.ReadLine
        Debug.Print s
    Loop

这将通读到文件的当前结尾。如果在您的代码仍在执行其他操作时向文件中添加了更多数据,您可以继续使用txt.ReadLine 获取更多数据。

要从头开始阅读,请执行

    Set txt = fso.OpenTextFile("C:\Your\Path\YourFile.csv", ForReading)

再次。

清理

EH:
    On Error Resume Next
    txt.Close
    Set txt = Nothing
    Set fso = Nothing
End Sub

【讨论】:

感谢您的帮助,但它给了我一个编译器错误。 "未定义用户定义类型" 您需要设置对Microsoft Scripting Runtime 的引用(从工具/参考菜单中) 好的,参考设置为 Microsoft Scripting Runtime 但我仍然无法正常工作:(

以上是关于如何在不打开的情况下从 CSV 文件中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在不监听事件的情况下从 firebase 数据库中检索数据 [重复]

如何在不刷新网页的情况下从下拉列表索引更改事件的数据库中检索数据

如何在不引用文件的情况下从图像中获取字节数据

SwiftUI 如何在不使用 List 的情况下从 @ObservedObject ViewModel 获取 Firebase 数据

如何在不更改代码的情况下从已编译的 jar 中检索完整的异常消息?

如何在程序启动后在不打开控制台的情况下从批处理文件运行程序?