Develop environment :
- OS - Windows 7 64bit
- CPU - i5 460M
- RAM - 8GB
- .NET framework - 4.0
- Excel-Interop - Microsoft Excel 14.0 Object Library
I'm using Excel-Interop to export excel file from DataGridView (dgv).
When I save more than about 150,000 rows
OutOfMemoryException
is thrown.
{
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);
}
This is best way to speed up that I known.
But, After monitoring RAM I think it causes memory increase. Exception is thrown when memory usage reached about 900Mb.
How do I catch this Exception?