я возвращаю массив данных из 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;
}