C# 效率导出Excel

 public void SaveAsExcel(string path, DataGridView gridView)
        {
            saveAsExcel(path, gridView);
            System.GC.Collect();
        }
        private void saveAsExcel(string path,DataGridView gridView)
        {
            object objMissing = System.Reflection.Missing.Value;

            Excel.Application app = new Excel.Application();

            app.Visible = false;
            Excel.Workbook workBook = app.Workbooks.Add(objMissing);
            Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Worksheets[1];
            for (int i = 0; i < gridView.Columns.Count; i++)
            {
                Excel.Range head = (Excel.Range)workSheet.Cells[3, i + 1];
                head.Value = gridView.Columns[i].HeaderText;
                head = null;
            }
            Excel.Range range = workSheet.get_Range("A4", objMissing);
            int rows = gridView.Rows.Count, cols = gridView.Columns.Count;
            Excel.Range ranges = range.get_Resize(rows, cols);
            object[,] datas = new object[rows, cols];
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < cols; j++)
                {
                    DataGridViewCell cell = gridView[j, i];

                    if (typeof(string) == cell.ValueType)
                    {
                        datas[i, j] = string.Format("'{0}", cell.FormattedValue);
                    }
                    else
                    {
                        datas[i, j] = cell.FormattedValue.ToString();
                    }
                }
            }
            ranges.Value = datas;

            workBook.SaveAs(path, objMissing, objMissing, objMissing, objMissing, objMissing, Excel.XlSaveAsAccessMode.xlNoChange, objMissing,
                objMissing, objMissing, objMissing);

            workBook.Close(false, objMissing, objMissing);
            app.Quit();
            range = null;
            ranges = null;
            workBook = null;
            workSheet = null;
            app = null;
        }
posted @ 2012-08-08 15:24  易水寒2012  阅读(166)  评论(0)    收藏  举报