|
分類:[.NET 全般]
.Net Framework3.5
Visual Studio C# 2008
CSVファイルをDataTableに読み込み
そのDataTableをDataGridViewのDataSourceに指定し、
m_DataTable.Rows.Add(new Object[] {"99","-","-","-"});
などでデータを追加表示しようとしています。
OLEDBとschema.iniを使用する方法でやることにし、
以下のコードを書きました。
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + directoryPath + ";"+
"Extended Properties=" + "\"Text;HDR=Yes;FMT=Delimited\"";
System.Data.OleDb.OleDbConnection con =
new System.Data.OleDb.OleDbConnection(conString);
con.Open();
string commText = "SELECT * FROM [" + fileName + "]";
System.Data.OleDb.OleDbDataAdapter da =
new System.Data.OleDb.OleDbDataAdapter(commText, con);
m_DataTable = new DataTable();
da.Fill(m_DataTable);
con.Close();
dataGridView1.DataSource = m_DataTable;
■schema.ini
[金属.csv]
ColNameHeader=True
Format=CSVDelimited
TextDelimiter=none
Col1=No Char Width 20
Col2=製造番号 Char Width 80
Col3=銀 Char Width 50
Col4=銅 Char Width 50
schema.iniと金属.csvは
directoryPath に置いてあります。
そこで問題が発生しました。
金属.csvの内容は
1,DA112,22.2,11.2
2,DA113,21.2,12.2
3,DA114,12.2,14.2
といった内容なのですが
schema.iniのChar指定が無視されているかのように
m_DataTable.Rows.Add(new Object[] {"","","",""});
を実行したところで
以下の例外が発生します。
入力文字列の形式が正しくありません。列 銀 に <-> を格納できませんでした。 必要な型は Double です。
OLEDBを使用すると
内容を解読する際に、自動で型を決めるといった記述を
Web検索で見つけましたが、
schema.iniで明示的に指定できるはずですよね?
無視されているということは
どこか記述が間違っているのでしょうか?
読み込んで、DataGridViewに
ファイルの内容が表示されるとこまでは動作確認できているのですが
m_DataTable.Rows.Add(new Object[] {"99","-","-","-"});
でこけます。
説明不足な点があるかもしれませんが
アドバイスお願い致します。
|