У меня есть таблица ввода в datagridview (вывод показан зеленым цветом), и мне нужно получить к этому выводу:
'Start of block' 'Size' 'TypKar'
1.2.2017 0:00:02 14 6280
1.2.2017 0:03:33 2 3147
1.2.2017 0:04:17 2 4147
1.2.2017 0:04:28 2 6280
1.2.2017 0:04:59 10 3147
Прямо сейчас я использую цикл for
, в котором я записываю первую запись, а затем считаю до тех пор, пока значение в столбце TypKar не изменится. Когда он меняется, я пишу дату и тип и начинаю считать с 1.
for(int i = 0; i < dviewExport.RowCount; i++)
{
//first line in excel
if(totalCount == 0)
{
totalCount = 32;
signCount = 1;
excelWsExport.Cells[totalCount, 2] = (DateTime)dviewExport[0, i].Value;
excelWsExport.Cells[totalCount, 3] = 1;
excelWsExport.Cells[totalCount, 4] = dviewExport["TypKar", i].Value;
continue;
}
//value is same = just increment
if((excelWsExport.Cells[totalCount, 4] as Excel.Range).Value.ToString() == dviewExport["TypKar", i].Value.ToString())
{
excelWsExport.Cells[totalCount, 3] = (excelWsExport.Cells[totalCount, 3] as Excel.Range).Value + 1;
signCount++;
if(maxCount < signCount)
maxCount = signCount;
}
//value changed = write new line and restart incrementing
else
{
totalCount++;
signCount = 1;
excelWsExport.Cells[totalCount, 2] = (DateTime)dviewExport[0, i].Value;
excelWsExport.Cells[totalCount, 3] = 1;
excelWsExport.Cells[totalCount, 4] = dviewExport["TypKar", i].Value;
}
}
Проблема в том, что я пишу это в Excel, и когда данные имеют несколько тысяч строк, это занимает много времени.
Можно ли ускорить его с помощью Excel Interop - записать его в массив, а затем вставить массив в Excel / sql / Ling или что-нибудь еще ?
Я пытался найти похожую проблему и получить некоторые ответы, но я не знаю, как описать мою проблему.