Zul*_*pia 21 c# csv oledb parsing oledbconnection
我知道这个话题已经完成了死亡,但我最终处于斗智斗勇.
我需要解析一个csv.这是一个非常普通的CSV和解析逻辑是由另一个开发人员使用OleDB编写的,他发誓它在度假前工作:)
CSV sample:
Dispatch Date,Master Tape,Master Time Code,Material ID,Channel,Title,Version,Duration,Language,Producer,Edit Date,Packaging,1 st TX,Last TX,Usage,S&P Rating,Comments,Replace,Event TX Date,Alternate Title
,a,b,c,d,e,f,g,h,,i,,j,k,,l,m,,n,
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我遇到了各种错误,具体取决于我尝试的连接字符串.
当我尝试连接字符串时:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\TEST.csv\";Extended Properties="text;HDR=No;FMT=Delimited"
Run Code Online (Sandbox Code Playgroud)
我收到错误:
'D:\TEST.csv' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
Run Code Online (Sandbox Code Playgroud)
当我尝试连接字符串时:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\TEST.csv;Extended Properties=Excel 12.0;
Run Code Online (Sandbox Code Playgroud)
或连接字符串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\TEST.csv;Extended Properties=Excel 8.0;
Run Code Online (Sandbox Code Playgroud)
我收到错误:
External table is not in the expected format.
Run Code Online (Sandbox Code Playgroud)
我正在考虑丢弃所有代码并从头开始.有什么明显的东西我做错了吗?
Dar*_*rov 39
您应该仅在连接字符串中指明目录名称.文件名将用于查询:
var filename = @"c:\work\test.csv";
var connString = string.Format(
@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""",
Path.GetDirectoryName(filename)
);
using (var conn = new OleDbConnection(connString))
{
conn.Open();
var query = "SELECT * FROM [" + Path.GetFileName(filename) + "]";
using (var adapter = new OleDbDataAdapter(query, conn))
{
var ds = new DataSet("CSV File");
adapter.Fill(ds);
}
}
Run Code Online (Sandbox Code Playgroud)
而不是OleDB你可以使用一个体面的CSV解析器(或另一个).
| 归档时间: |
|
| 查看次数: |
41865 次 |
| 最近记录: |