C#

2013-04-17 1 views
0

을 사용하여 Excel 파일의 특정 셀을 datagridview로 가져 오는 방법 Excel 파일의 특정 셀을 datagridview의 특정 셀로 가져 오려고합니다.C#

여기 Excel 테이블을 가져 오는 많은 자습서를 따라했지만 Dataagridview의 특정 위치에만 특정 셀만 있으면되므로 코드를 수정했습니다.

대신 : DataGridView1.DataSource = dt; 내가했는데 : dataGridView1.Rows[0].Cells[0].Value = dt;하지만 작동하지 않습니다.

나를 도와 줄 수 있습니까?

여기

코드입니다 감사 :

string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBox1.Text + @";Extended Properties=""Excel 12.0 Macro;HDR=YES;ImportMixedTypes=Text;TypeGuessRows=0"""; 

     OleDbConnection con = new OleDbConnection(constr); 

     //specific cell 1 - product "code" 
     OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [ARTIGOS$A" + textBox3.Text + ":A" + textBox3.Text + "]", con); 
     //specific cell 2 - product "description" 
     OleDbDataAdapter sdb = new OleDbDataAdapter("select * From [ARTIGOS$B" + textBox3.Text + ":B" + textBox3.Text + "]", con); 
     //specific cell 3 - product "price" 
     OleDbDataAdapter sdc = new OleDbDataAdapter("Select * From [ARTIGOS$I" + textBox3.Text + ":I" + textBox3.Text + "]", con); 

     DataTable dt = new DataTable(); 
     DataTable dt2 = new DataTable(); 
     DataTable dt3 = new DataTable(); 

     sda.Fill(dt); 
     sdb.Fill(dt2); 
     sdc.Fill(dt3); 

     dataGridView1.Rows.Add(); 
     dataGridView1.Rows[0].Cells[0].Value = dt; 
     dataGridView1.Rows[0].Cells[1].Value = dt2; 
     dataGridView1.Rows.Add(); 
     dataGridView1.Rows[0].Cells[2].Value = textBox2.Text; 
     dataGridView1.Rows[0].Cells[3].Value = dt3; 
+0

Excel 파일에서 데이터를 검색하는 데 문제가 있습니까? – Steve

답변

0

코드 다음을 참조하십시오 :

private Excel.Application App; 
private Excel.Range rng = null; 
private void button1_Click_1(object sender, EventArgs e) { 
    OpenFileDialog OFD = new OpenFileDialog(); 
    OFD.Filter = "Excel Worksheets|*.xls;*.xlsx;*.xlsm;*.csv"; 
    if (OFD.ShowDialog() == System.Windows.Forms.DialogResult.OK) { 
     App = new Excel.Application(); 
     App.Visible = true; 
     App.Workbooks.Open(OFD.FileName); 
    } 
    else { return; } 

    try { rng = (Excel.Range)App.InputBox("Please select a range", "Range Selection", Type: 8); } 
    catch { } // user pressed cancel on input box 

    if (rng != null) { 
     DataTable dt = ConvertRangeToDataTable(); 
     if (dt != null) { dataGridView1.DataSource = dt; } 
    } 
    _Dispose(); 
} 
private DataTable ConvertRangeToDataTable() { 
    try { 
     DataTable dt = new DataTable(); 
     int ColCount = rng.Columns.Count; 
     int RowCount = rng.Rows.Count; 

     for (int i = 0; i < ColCount; i++) { 
      DataColumn dc = new DataColumn(); 
      dt.Columns.Add(dc); 
     } 
     for (int i = 1; i <= RowCount; i++) { 
      DataRow dr = dt.NewRow(); 
      for (int j = 1; j <= ColCount; j++) { dr[j - 1] = rng.Cells[i, j].Value2; } 
      dt.Rows.Add(dr); 
     } 
     return dt; 
    } 
    catch { return null; } 
} 
private void _Dispose() { 
    try { Marshal.ReleaseComObject(rng); } 
    catch { } 
    finally { rng = null; } 
    try { App.Quit(); Marshal.ReleaseComObject(App); } 
    catch { } 
    finally { App = null; } 
} 

가있는 gridview에 XLS 파일에서 특정 범위를 가져 오기에 대한 자세한 내용은 다음과 같은 질문을 참조하십시오 :

import a specific range from xls file to datagridview in c#

+0

난 단지 이것에 문제가 있는지 알아야합니다. dataGridView1.Rows [0] .Cells [0] .Value = dt –

+0

값의 묶음을 가진 객체를 단일 셀에 전달하고 있습니다. dt는 objct 값이 아닌 – Freelancer

+0

이지만 do : DataGridView1.DataSource = dt; 그것은 셀의 값을 보여 주지만 대신에 새로운 열을 보여 주며, 원하는 위치에 표시합니다. 즉, "dataGridView1.Rows [0] .Cells [0]" –