Excel シートからデータテーブルにデータをインポートしていますが、データ型に関する問題/質問があります。データテーブルを作成するときに、列とそのデータ型を追加します。この後、Excel からデータをインポートすると、正常に動作します。列のデータ型を確認すると、期待どおりの結果が得られます。ただし、関数に値を渡そうとすると、設定したデータ型ではなく、オブジェクト型を渡そうとしているというメッセージが表示されます。
これが私のコードです(単純化されたデータセットです):
public void importData(string _file)
{
DataTable dtTest = new DataTable();
dtTest.Columns.Add("a", typeof(Int32));
dtTest.Columns.Add("b", typeof(Int32));
string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", _file);
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
string sheetName = "Sheet1";
string sql = "SELECT * FROM [" + sheetName + "$]";
OleDbCommand objCmdSelect = new OleDbCommand(sql, conn);
objAdapter.SelectCommand = objCmdSelect;
objAdapter.Fill(dtTest);
conn.Close();
form.write(dtTest.Rows[0]["a"]);
}
関数「form.write()」は整数を受け入れます。
値を form.write に渡す前にデータ型を確認すると、Int32 と表示されます。
if (dtTest.Columns[0].DataType == typeof(Int32))
{
//this is true
}
私は何を間違っていますか?