2013-08-22 4 views
2

Я разрабатываю приложение формы в C#. Моя программа будет считывать значения из excel-ячеек и вставлять данные в DataGridView для отображения пользователей.Ввод значений строковых массивов в DataGridView C#

После того, как я прочитал файлы excel, я получаю результаты в строковых массивах. Как я могу вставить в DataGridView?

private void btnImport_Click(object sender, EventArgs e) 
    { 
     Microsoft.Office.Interop.Excel.Application ExcelObj = null; 
     ExcelObj = new Microsoft.Office.Interop.Excel.Application(); 

     if (ExcelObj != null) 
     { 
      if (tbxFileDirectory.Text != "") 
      { 
       Workbook workbook = ExcelObj.Workbooks.Open(
       openFD.FileName, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true); 

       Sheets sheets = workbook.Worksheets; 

       //Get excel sheet number 
       Worksheet worksheet = (Worksheet)sheets.get_Item(1); 

       for (int i = 6; i <= worksheet.UsedRange.Rows.Count; i++) 
       { 
        Range range = worksheet.get_Range("A" + i.ToString(), "K" + i.ToString()); 

        Array myvalues = (Array)range.Cells.Value; 

        string[] strArray = ConvertToStringArray(myvalues); 

        //INSERT INTO DATAGRIDVIEW 
       } 
       MessageBox.Show("File was imported successfully"); 
      } 
      else 
      { 
       MessageBox.Show("Please select the file to import."); 
      } 
     } 
     else 
     { 
      MessageBox.Show("ERROR: EXCEL couldn't be started!"); 
     } 
    } 

Моя DataGrid 4 колонки, ProductID, ProductName, Цена, & Кол. Я хочу вставить эти значения, strArray [0], strArray [1], strArray [9] & strArray [10] в каждом столбце. Как я могу это сделать? Любая помощь будет высоко ценится!

ответ

2

DataGridView имеет проблемы с производительностью при вставке строк непосредственно, и это неудобно манипулировать данными, если все у вас есть данные в самой сетке (хотя, очевидно, вы должны данных вы проанализировали от excel). Обычно вам лучше помещать данные в DataTable, а затем привязывать их к сетке.

См. Add new column and data to datatable that already contains data - c#, если вам нужен пример ввода данных в DataTable с помощью кода.

Связывание легко, присвойте DataTable объекту DataSource сетки.

Если вы получаете более нескольких сотен строк, вы все равно можете увидеть проблемы с производительностью, однако, изменив логику на виртуализацию данных, см. DataGridView live display of datatable using virtual mode для простого примера.

2

вы можете сделать это

dataGridView1.Rows.Add(strArray[0],strArray[1]......); 
+0

Я могу вставить строки непосредственно в DataGridView, но я бы использовал DataTable, чтобы вставить их в него. Спасибо за вашу помощь. +1 –

Смежные вопросы