Microsoft.ACE.OLEDB.12.0 CSV ConnectionString

Dan*_*şar 9 c# csv oledb provider connection-string

我知道这种问题会不时被问到,但我找不到任何令人满意的解决方案.

如何使用MS ACE OLEDB 12打开CSV文件?我尝试使用以下代码.

DbConnection connection = new OleDbConnection();
connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents;Extended Properties=\"Text;HDR=Yes\"";
connection.Open();
DbCommand cmd;

cmd = connection.CreateCommand();
cmd.CommandText = "SELECT * FROM [Mappe1#csv]";
DbDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    for (int i = 0; i < reader.FieldCount; i++)
        Console.Write("(" + reader.GetValue(i).ToString() + ")");

    Console.WriteLine();
}

cmd.Dispose();
connection.Dispose();
Console.WriteLine("Done");
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

问题是只找到一列.文本由';'分隔.即使我用"Delimited(|)"指定分隔符,它也行不通.

我找不到这个提供商的任何文档......

小智 6

这有助于我使用ACE.OLEDB.12.0在C#中解析用分号分隔的csv:http://sqlserverpedia.com/blog/sql-server-bloggers/use-ace-drivers-and-powershell-to-talk- to-text-files /:

使用以下内容在与要导入的csv文件相同的目录中创建schema.ini文本文件:

[fileIwantToImport.csv]
Format=Delimited(;)
ColNameHeader=True
Run Code Online (Sandbox Code Playgroud)

为我工作.但是很难过.

好像FORMAT=Delimited(;)在连接字符串已经过时了......


ble*_*ech 2

尝试:

connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents;Extended Properties=\"Text;HDR=Yes;FORMAT=Delimited\"";
Run Code Online (Sandbox Code Playgroud)

(将“FORMAT=Delimited”插入连接字符串的扩展属性中...)