Excel VBA使用SQL语句操作大型csv文件
我不确定这个问题是否合理/愚蠢或不够具体。请告知 我需要创建一个excel宏,该宏将输出满足特定条件的大型csv文件的一部分 例如,在csv中,有一个包含2000万左右电话号码的列表以及其他列(城市、性别等)。我想让用户输入这些标准,并输出一个新的csv文件的结果或在一个新的标签 有没有办法用熊猫或类似SQL的语句查询csv文件?比如Excel VBA使用SQL语句操作大型csv文件,excel,vba,Excel,Vba,我不确定这个问题是否合理/愚蠢或不够具体。请告知 我需要创建一个excel宏,该宏将输出满足特定条件的大型csv文件的一部分 例如,在csv中,有一个包含2000万左右电话号码的列表以及其他列(城市、性别等)。我想让用户输入这些标准,并输出一个新的csv文件的结果或在一个新的标签 有没有办法用熊猫或类似SQL的语句查询csv文件?比如df[df[city]='CA'] 我想能够分发这个宏,所以如果有可能的话,不必安装一些数据库 如果这是可能的,与安装SQL数据库(例如)相比,这有多高效/低效 谢
df[df[city]='CA']
我想能够分发这个宏,所以如果有可能的话,不必安装一些数据库
如果这是可能的,与安装SQL数据库(例如)相比,这有多高效/低效
谢谢一个选项是使用ADO将CSV文件作为记录集读取。这将允许您使用记录集的.Filter属性应用用户的筛选器 对另一个问题的回答显示了如何将文件作为记录集打开:
您需要检查这对内存的占用情况,因为您已经指出您的CSV文件将非常大。一个选项是使用ADO将CSV文件作为记录集读取。这将允许您使用记录集的.Filter属性应用用户的筛选器 对另一个问题的回答显示了如何将文件作为记录集打开:
您需要检查这对内存的占用情况,因为您已经指出您的CSV文件将非常大。您应该有一些可用的选项。考虑下面的VBA代码。
Sub TryThis()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
DBPath = "C:\Users\Excel\Desktop\"
sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath & ";Extended Properties='text;HDR=YES;FMT=Delimited'"
Conn.Open sconnect
sSQLSting = "SELECT * From CSV1.csv WHERE ID = 2"
mrs.Open sSQLSting, Conn
ActiveSheet.Range("A2").CopyFromRecordset mrs
'Close Recordset
mrs.Close
Conn.Close
End Sub
文件看起来像这样
在代码运行之后,您将得到这个
另外,请参见下面的链接
最后,考虑使用电源枢轴,这是一个免费插件。
您应该有一些选择。考虑下面的VBA代码。
Sub TryThis()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
DBPath = "C:\Users\Excel\Desktop\"
sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath & ";Extended Properties='text;HDR=YES;FMT=Delimited'"
Conn.Open sconnect
sSQLSting = "SELECT * From CSV1.csv WHERE ID = 2"
mrs.Open sSQLSting, Conn
ActiveSheet.Range("A2").CopyFromRecordset mrs
'Close Recordset
mrs.Close
Conn.Close
End Sub
文件看起来像这样
在代码运行之后,您将得到这个
另外,请参见下面的链接
最后,考虑使用电源枢轴,这是一个免费插件。