2017-01-23 13 views
0

DataGridviewでExcelの値を表示するためのヘルプが必要です。 私は値を表示することができますが、一部の値が欠けています(列と行の値).i Excelのファイルに1000行あり、データグリッドビューには333項目しか表示されません。私は148の列数を持っていますが、いくつかしか表示されません。誰かが問題の内容を教えてくれますか?ここDataGridViewでExcelブックの値を表示するC#

は私のコードです:

 public partial class MainBagsakan : Form 
    [enter image description here][1] 
     String [email protected]"C:\Users\tjjtabije\Desktop\TestExcelUpdater\TestUnoREFARM.xlsx"; 
     private string Excel07ConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\t-jjtabije\\Desktop\\TestExcelUpdater\\TestUnoREFARM.xlsx;Extended Properties='Excel 12.0 Xml;IMEX=1;HDR=YES;TypeGuessRows=0;ImportMixedTypes=Text'"; 
     private void WorkOrderTab() 
    { 

     string filePath = Path.GetFullPath(WOmain); 
     string extension = Path.GetExtension(filePath); 
     string conStr, sheetName; 
     conStr = string.Empty; 

     //Get the name of the First Sheet. 
     using (OleDbConnection con = new OleDbConnection(Excel07ConString)) 
     { 
      using (OleDbCommand cmd = new OleDbCommand()) 
      { 
       cmd.Connection = con; 
       con.Open(); 
       DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
       sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); 
       con.Close(); 
      } 
     } 
     using (OleDbConnection con = new OleDbConnection(Excel07ConString)) 
     { 
      using (OleDbCommand cmd = new OleDbCommand()) 
      { 
       using (OleDbDataAdapter oda = new OleDbDataAdapter()) 
       { 
        DataTable dt = new DataTable(); 
        cmd.Connection = con; 
        cmd.CommandText = "SELECT * [" +sheetName+ "]"; 
        con.Open(); 
        oda.SelectCommand = cmd; 
        oda.Fill(dt); 
        con.Close(); 

        //Populate DataGridView. 
        WorkLoadDisp.DataSource = dt; 
        label1.Text = dt.Rows.Count.ToString(); 
       } 
      } 
     } 
    } 
+0

WorkLoadDisp.DataSource = dt;でブレークポイントを設定し、 'dt'でwhatsをチェックする必要があります。私はあなたが考える必要があるすべてのデータを取得していないかもしれないと推測しています。ちょうど推測。 – JohnG

+0

こんにちは。ブレークポイントはどういう意味ですか?さらに私はプログラミングに新しいことを説明してください。はい、私はExcel上のすべてのデータを取得していません。助けてくれてありがとう –

+0

Visual StudioのようなIDEを使用している場合は、コード行にブレークポイントを設定することができます。 (rightClick-> Breakpoint)コードを実行すると、ブレークポイントでの実行が停止します。停止すると、 'dt'のような変数を調べて、それらの内容を調べることができます。あなたが 'DataGridView'が正しく表示されていないことを指摘していて、' DataGridView'の問題を探している前かもしれません...あなたが得ているデータが正しいことを確認してください。これが理にかなってほしい。 – JohnG

答えて

0

二回使用すると、2つの別々の使用の句であるとの接続を開閉する必要があります。最初のものはワークシートの名前を取得するだけで、名前付き範囲も返すことができます。私は単純にすべてのコードを1つのグループに入れて、期待どおりに動作するように見えます。

は、select文に不足しているFROMを追加しました:

cmd.CommandText = "SELECT * FROM [" + sheetName + "]"; 

を私が行った変更は以下の通りです...

using (OleDbConnection con = new OleDbConnection(Excel07ConString)) { 
    using (OleDbCommand cmd = new OleDbCommand()) { 
    using (OleDbDataAdapter oda = new OleDbDataAdapter()) { 
     cmd.Connection = con; 
     con.Open(); 
     DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); 
     DataTable dt = new DataTable(); 
     cmd.Connection = con; 
     cmd.CommandText = "SELECT * FROM [" + sheetName + "]"; 
     //con.Open(); 
     oda.SelectCommand = cmd; 
     oda.Fill(dt); 
     con.Close(); 
     //Populate DataGridView. 
     WorkLoadDisp.DataSource = dt; 
     label1.Text = dt.Rows.Count.ToString(); 
    } 
    } 
} 

・ホープ、このことができます。

+0

助けてくれてありがとう!できます ! –

+0

うれしいことです。 'sheetName = dtExcelSchema.Rows [0] [" TABLE_NAME "]。ToString();'ワークシートに名前付き範囲を作成し、それが存在しないかどうかを確認する '上の行で返されます。ただ頭を上げる。 – JohnG

+0

お元気です。 –

関連する問題