Среда разработки:
- ОС - Windows 7 64bit
- Процессор - i5 460M
- Оперативная память - 8 ГБ
- Платформа .NET — 4.0
- Excel-Interop — библиотека объектов Microsoft Excel 14.0
Я использую Excel-Interop для экспорта файла Excel из DataGridView (dgv).
Когда я сохраняю более 150 000 строк
OutOfMemoryException
бросается.
{
object[,] valueObjArray = new object[rowCnt, colCnt];
int rowCnt = dgv.Rows.Count;
int colCnt = dgv.Columns.Count;
for (int rowIndex = 0; rowIndex < rowCnt; rowIndex++)
{
for (int colIndex = 0; colIndex < colCnt; colIndex++)
{
valueObjArray[rowIndex, colIndex] = dgv[colIndex, rowIndex].Value;
}
}
_workSheet.get_Range("A1", Convert.ToChar(colCnt + 64).ToString() + "1").Value2 = headerObjArray;
_workSheet.get_Range("A2", Convert.ToChar(colCnt + 64).ToString() + (rowCnt + 1).ToString()).Value2 = valueObjArray;
_workSheet.get_Range("B2", "B" + (rowCnt+1).ToString()).NumberFormat = "yyyy-mm-dd hh:mm";
_workBook.SaveAs(path);
}
Это лучший способ ускорить, что я знаю.
Но после мониторинга оперативной памяти я думаю, что это вызывает увеличение памяти. Исключение возникает, когда использование памяти достигает около 900 МБ.
Как поймать это исключение?