2011-07-25 14 views
20

このトピックは死に至りましたが、私は賢明なところです。C#でOleDbを使用してCSVを解析する

私はcsvを解析する必要があります。かなり平均CSVおよび解析ロジックは、彼が休暇に行く前に、それが動作することを誓った別の開発者:)

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, 

でのOleDBを使用して書かれている私が持っている問題は、私は、接続に応じて様々なエラーが出るということですです私は試してみてください。私は、接続文字列をしようとすると

は:

'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. 

私は、接続文字列試してください:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\TEST.csv\";Extended Properties="text;HDR=No;FMT=Delimited" 

私はエラーを取得

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\TEST.csv;Extended Properties=Excel 12.0; 

または接続文字列を

私はすべてのコードを捨てると、ゼロからのスタート検討しています

External table is not in the expected format. 

:10

私はエラーを取得します。私が間違っていることが明らかなことはありますか?

答えて

33

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\TEST.csv;Extended Properties="Excel 12.0;HDR=YES"; 
+0

十分にありがとうございます!まともなCSVパーサーに教えてもらえますか?さらに接続文字列をどこで読むことができますか?今の私のようなブードー。 –

+1

@ Zulfi Tapia、私は答えの終わりに2 *まともな* CSVパーサーにあなたを指摘しました。 –

+0

すべての助けてくれてありがとう! –

0

あなたがHDRを含める必要があるので= YESプロパティは、このように、あなたの最初の行に列名が含まれているようだ:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\TEST.csv;Extended Properties=\"Excel 8.0;IMEX=1\"" 
+0

はい、最初の列はヘッダーです。 '外部テーブルが期待されたフォーマットではありません.'まだまだ –

0

接続文字列を試してみてください接続文字列にはディレクトリ名のみを指定する必要があります。ファイル名は、クエリに使用されますのOleDBの

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); 
    } 
} 

、代わりにあなたがdecent CSV parser(またはanother one)を使用することができます。

+0

は'外部テーブルが期待どおりのフォーマットではありません.' still ... :) –

0
var [email protected]"D:\TEST.csv"; 
string dir = Path.GetDirectoryName(s); 
string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" 
         + "Data Source=\"" + dir + "\\\";" 
         + "Extended Properties=\"text;HDR=YES;FMT=Delimited\""; 
+0

これは私が上記の2つのエラーを乗り越えますが、ディレクトリでどのファイルを選択するのですか? クラッシュし、 'Microsoft Jetデータベースエンジンが 'TEST $ .txt'オブジェクトを見つけることができませんでした。オブジェクトが存在し、名前とパス名のスペルが間違っていないことを確認してください。 ' –

関連する問題