2016-07-20 12 views
0

ExcelテーブルデータをDataGridViewに追加しようとしています(dgvInitial)。初めに私はExcelテーブルをC#WinFormsで既に初期化されたDataGridViewにロードします

private void DataForm_Load(object sender, EventArgs e) 
    { 
     int column = 100; 
     int rows = 1000; 

     dgvInitial.AutoGenerateColumns = false; 
     for (int i = 1; i <= column; i++) 
     { 
      dgvInitial.Columns.Add("Col_" + i, "Col_" + i); 
      dgvInitial.Columns[i - 1].FillWeight = 1; 
     } 
     for (int j = 0; j < rows; j++) 
      dgvInitial.Rows.Add(); 

     foreach (DataGridViewColumn col in dgvInitial.Columns) 
     { 
      col.SortMode = DataGridViewColumnSortMode.NotSortable; 
     } 
    } 

私はDGVにExcelの表を追加しようとしている(別のstackoverflowのタスクから使用されているソースコードが、問題は非常に異なっている) loadToolStripMenuItem_ClickイベントででDGVを初期化しています
System.Data.OleDb.OleDbConnection MyConnection; 
     System.Data.DataSet DtSet; 
     System.Data.OleDb.OleDbDataAdapter MyCommand; 
     MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Sample.xlsx';Extended Properties=Excel 8.0;"); 
     MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection); 
     MyCommand.TableMappings.Add("Table", "Net-informations.com"); 
     DtSet = new System.Data.DataSet(); 
     MyCommand.Fill(DtSet); 
     dgvInitial.DataSource = DtSet.Tables[0]; 
     MyConnection.Close(); 

しかし、それはdgvの行数を減らすだけなので、データは表示されません。私はDataForm_Loadイベントのすべてをコメントするので、正常に動作しています。

どうか、この問題を解決するにはどうすればよいですか?事前にどうもありがとうございました。

+0

可能な重複http://stackoverflow.com/questions/16293643/import-excel-to -datagridview) – Chawin

答えて

0

接続文字列のために、このフォーマットを試してみてください、

 string Connectionstr = "";  
     string filePath ="C:\Sample.xlsx"; 
     string fileExtension = Path.GetExtension(filePath).ToLower(); 

     if (fileExtension == ".xls") 
     Connectionstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; 
     if (fileExtension == ".xlsx") 
     Connectionstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"; 
     MyConnection = new System.Data.OleDb.OleDbConnection(Connectionstr); 
     MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection); 
     MyCommand.TableMappings.Add("Table", "Net-informations.com"); 
     DtSet = new System.Data.DataSet(); 
     MyCommand.Fill(DtSet); 
     dgvInitial.Columns.Clear(); 
     dgvInitial.AutoGenerateColumns = true; 
     dgvInitial.DataSource = DtSet.Tables[0]; 
     MyConnection.Close(); 
[DataGridViewのへのインポートエクセル](の
+0

いいえ、動作しません。既に初期化されたdgvで何かが間違っています... – SmithiM

+0

@SmithiM上記のコードを今すぐ試してください。それは動作します –

+0

ありがとうたくさんのサー!よく働く。 – SmithiM

関連する問題