私はoledbとc#を使ってExcelにデータを書き出しています。 私は問題に直面していますが、私がExcelファイルに保存しようとするデータのいくつかは数値(Int変数)ですが、Excelに挿入しようとするとテキストになります。また、データがIntであることを確認するために、Convert.ToInt32メソッドを使用して変換しています。c# - excel - 数値フィールドを数値フィールドとして格納する方法
データが最終的な場合は、コード固有の番号に書き込まれていることを意味しますが、それはExcelの番号にとどまりますが、他のデータはテキストになります。私はそれを取得する場合
(コードで)結果オブジェクト辞書(文字列、オブジェクト)
public void insertIntoDb()
{
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", Globals.path);
OleDbConnection dbConnection = new OleDbConnection(connectionString);
String query = "INSERT INTO [SHEET1$] ([Id],[Name],[Email],[Phone],[Complete Date],[Destination],[Passengers],[Depart],[End],[Nights],[Price]) VALUES (@value1,@value2,@value3,@value4,@value5,@value6,@value7,@value8,@value9,@value10,@value11)";
dbConnection.Open();
OleDbCommand cmd = new OleDbCommand(query, dbConnection);
cmd.Parameters.AddWithValue("@value1", (this.getLastId()+1));
cmd.Parameters.AddWithValue("@value2", this.results["Name"]);
//TODO: Add email to MsgToText
cmd.Parameters.AddWithValue("@value3", this.results["Email"]);
cmd.Parameters.AddWithValue("@value4", this.results["Phone"]);
cmd.Parameters.AddWithValue("@value5", this.results["Date"]);
cmd.Parameters.AddWithValue("@value6", Convert.ToInt32(this.results["Destination"]));
cmd.Parameters.AddWithValue("@value7", Convert.ToInt32(this.results["Passengers"]));
cmd.Parameters.AddWithValue("@value8", this.results["Departure Date"]);
cmd.Parameters.AddWithValue("@value9", this.results["End Date"]);
cmd.Parameters.AddWithValue("@value10", Convert.ToInt32(this.results["Nights"]));
cmd.Parameters.AddWithValue("@value11", Convert.ToInt32(this.results["Price"]));
if(cmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("Added to DB");
dbConnection.Close();
}
}
こんにちは、私の質問のコードは、私が特定の行のフィールドのタイプを定義しようとすると、それは単に行をスキップしてExcelに書き込むコードです – ronfl