0
如何使用Excel interop在Excel表格中查找行,而不必遍歷每一行?我;我喜歡使用foreach語句來循環使用我的集合,並且在其中存在employeeId和計費號碼,我想更新該員工的總小時數和該計算員工的總小時數。在foreach Excel interop中查找包含兩個值的行
這是我目前的代碼,但是人是它慢!
代替嵌套的for循環,我可以使用excel範圍來查找包含employeeId和計費編號的行嗎?
var lastLine = sheet.UsedRange.Rows.Count;
foreach (var timeEntry in filteredList.OrderBy(x =>int.Parse(x.ChargeNumber.Split('.')[2], CultureInfo.CurrentCulture)))
{
for (var row = 3; row <= lastLine; row++) //loop over archive sheet
{
if (Convert.ToInt32(timeEntry.EmployeeId) == sheet.Cells[row, 1].Value2 && timeEntry.ChargeNumber == sheet.Cells[row, 5].Text.Trim())
{
sheet.Cells[row, 6] = timeEntry.TotalHours;
if (timeEntry.TimeDifferential > 0)
{
sheet.Cells[row, 8] = "Add " + timeEntry.TimeDifferential.ToString(CultureInfo.CurrentCulture) + " from " + previousMonthYear;
}
else if (timeEntry.TimeDifferential < 0)
{
var normalTime = -(timeEntry.TimeDifferential);
sheet.Cells[row, 8] = "Subtract " + normalTime.ToString(CultureInfo.CurrentCulture) + " from " + previousMonthYear;
}
break;
}
}
}
循環過的細胞是很慢的使用互操作由於RCW的。而是得到一個二維數組的單元格,並處理'object [,]'數組:array_http://stackoverflow.com/questions/356371/excel-interop-efficiency-and-performance –