Медленный импорт из Excel в DataGrid в C# с помощью Excel взаимодействия


Я инженер-строитель, который любит программировать. Я написал код, который импортирует данные из конкретного региона в Excel для конкретных столбцов элемента управления datagridview (где колонки уже создано с помощью конструктора). Я написал ужасный код, который делает следующие вещи:

  • Считывает весь лист Excel
  • Хранят значения в список
    • Обойти и избежать пустых/нулевых ячеек в листах
    • Удалить пустые ячейки
    • Добавление строк в datagridview в
    • Заполнить их с помощью петель

Я сделал это как-то, но это занимает время и я не удовлетворен, даже если это не займет много времени. Я хочу использовать взаимодействия Excel, который является limation. Есть ли способ, чтобы оптимизировать мой код в лучшую сторону?

string ExcelFinalPath = tb_ExcelPathUCC.Text;
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
progressBar1.Value = 2;
Workbook workbook = app.Workbooks.Open(ExcelFinalPath);
progressBar1.Value = 4;
Worksheet sheet = (Worksheet)workbook.Sheets[cmb_SheetUCC.Text]; // Sheet Access
progressBar1.Value = 10;
Microsoft.Office.Interop.Excel.Range Mycells = sheet.Cells; // Getting cells
Mycells = sheet.UsedRange; //Getting Used Cells
object CellValue = null;
object CellValue2 = null;



//Collecting all cell values
for (int i = 1; i < Mycells.Rows.Count; i++)
{

    //Avoid Null Exception due empty cell values
    if (Mycells.Item[i, 1].Value == null)
    {

    }
    else
    {
        //Adding All values to Column 1
        CellValue = Mycells.Item[i, 1].Value;
        // Adding Valuues to a List of Column 1
        UCCValue1.Add(CellValue.ToString());


    }
    //Avoid Null Exception due empty cell values
    if (Mycells.Item[i, 6].Value == null)
    {

    }
    else
    {
        //Adding All Values to Column 2
        CellValue2 = Mycells.Item[i, 6].Value;
        // Adding Values to List of Column 2
        UCCValue2.Add(CellValue2.ToString());
    }



}
progressBar2.Value = 20;
//Removing Empty Cells from Values in Cell for Column1 
for (int i = 0; i < UCCValue1.Count; i++)
{

    if (UCCValue1[i] == "")
    {
        UCCValue1.Where(item => item != string.Empty).ToArray();
    }

}
progressBar2.Value = 30;
//Removing Empty Cells from Values in Cell for Column 2
for (int i = 0; i < UCCValue2.Count; i++)
{

    if (UCCValue2[i] == "")
    {
        UCCValue2.Where(item => item != string.Empty).ToArray();
    }

}


progressBar2.Value = 50;
//Adding rows in Datagridview
for (int i = 4; i < UCCValue1.Count - 1; i++)
{

    dataGridView2.Rows.Add();
}
progressBar2.Value = 60;
//Adding Values of Just Guages
for (int i = 4; i < UCCValue1.Count; i++)
{

    dataGridView2.Rows[i - 4].Cells[0].Value = UCCValue1[i];

}
progressBar2.Value = 70;
//Adding Values of Just Guages
for (int i = 3; i < UCCValue2.Count; i++)
{

    dataGridView2.Rows[i - 3].Cells[5].Value = UCCValue2[i];

}


720
1
задан 11 марта 2018 в 03:03 Источник Поделиться
Комментарии