2017-07-29 17 views
0

私は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(); 
     } 
    } 

答えて

0

である私はこの問題は、Excelに書くことで、最後にあなたのint型がテキストであることを前提としていフォーマット。書き込みを行うコードを置くと簡単になります。あなたのファイルにExcelテンプレートを使用していますか?はいの場合は、テンプレート内のセルのタイプを定義して数値にすることができます。そうでない場合は、この例のように書き込む前にセルのタイプを定義できます。 整数の場合:xlYourRange.NumberFormat = "0";

この例のようにセルのフォーマットを確認できます。 string checkFormat = range.EntireColumn.NumberFormat.ToString();

+0

こんにちは、私の質問のコードは、私が特定の行のフィールドのタイプを定義しようとすると、それは単に行をスキップしてExcelに書き込むコードです – ronfl

関連する問題