C # Вставка таблицы данных, чтобы преуспеть с большим набором записей медленно 4500 записей в течение 6 минут - PullRequest
0 голосов
/ 05 июня 2019

я возвращаю массив данных из SQL в таблицу данных.Причиной для таблицы данных является то, что я использую набор записей в нескольких местах.

Когда я использую таблицу данных для вставки данных в Excel с использованием цикла for с примерно 4500 записями, это очень медленно, принимая более 6минут.Я ищу некоторые рекомендации по настройке моего кода, чтобы сделать его быстрее.

Я понимаю, что многие из вас будут ненавидеть комментарии, которые я имею, но я все еще учусь, и они там, чтобы помочь мне, пока я пишу этот проект

    void ExcelOutput()
    {

        Microsoft.Office.Interop.Excel.Application oXL;
        Microsoft.Office.Interop.Excel._Workbook oWB;
        Microsoft.Office.Interop.Excel._Worksheet oSheet;
        Microsoft.Office.Interop.Excel.Range oRng;
        object misvalue = System.Reflection.Missing.Value;
        try
        {
            //Start Excel and get Application object.
            oXL = new Microsoft.Office.Interop.Excel.Application();
            oXL.Visible = false;

            //Get a new workbook. and set the sheets up
            oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(""));
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
            oSheet.Name = "Records";
            for (int i = 0; i < 2; i++)
            {
                oWB.Sheets.Add(After: oWB.Sheets[oWB.Sheets.Count]);
            }

            oWB.Sheets[2].Activate();
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
            oSheet.Name = "Matters";
            oWB.Sheets[3].Activate();
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
            oSheet.Name = "Notes";
            //Code to add another sheet if required
            oWB.Sheets.Add(After: oWB.Sheets[oWB.Sheets.Count]);
            oWB.Sheets[4].Activate();
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
            oSheet.Name = "Optional FN LN Only Search";
            //Code to add another sheet if required
            //oWB.Sheets.Add(After: oWB.Sheets[oWB.Sheets.Count]);

            //reset back to required sheet
            oWB.Sheets[3].Activate();
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
            //Add table headers going cell by cell.
            oSheet.Cells[1, 1] = "Data From";
            oSheet.Cells[1, 2] = "Attatched to";
            oSheet.Cells[1, 3] = "Key ID";
            oSheet.Cells[1, 4] = "Subject";
            oSheet.Cells[1, 5] = "Notes";
            oSheet.Cells[1, 6] = "Contact Name";

            x = 2;
            y = 1;

            foreach (DataRow dr in dtNotesConflict.Rows)
            {
                oSheet.Cells[x, 1] = dr["datafrom"];
                oSheet.Cells[x, 2] = dr["Attach_to"];
                oSheet.Cells[x, 3] = dr["Key_ID"];
                oSheet.Cells[x, 4] = dr["subject"];
                oSheet.Cells[x, 5] = dr["notes"];
                oSheet.Cells[x, 6] = dr["Contact_Name"];
                x = x + 1;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...