首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

【转】C# WinForm停DataGridView导出Excel的实现(简单无错版,带另存对话框)

2013-10-19 
【转】C# WinForm下DataGridView导出Excel的实现(简单无错版,带另存对话框)//首先请先引用:Microsoft.Office

【转】C# WinForm下DataGridView导出Excel的实现(简单无错版,带另存对话框)


//首先请先引用:Microsoft.Office.Interop.Excel 11.0.0.0 .  #region 导出excel        private void ExportExcel(string fileName, DataGridView myDGV)        {            string saveFileName = "";            //bool fileSaved = false;            SaveFileDialog saveDialog = new SaveFileDialog();            saveDialog.DefaultExt = "xls";            saveDialog.Filter = "Excel文件|*.xls";            saveDialog.FileName = fileName;            saveDialog.ShowDialog();            saveFileName = saveDialog.FileName;            if (saveFileName.IndexOf(":") < 0) return; //被点了取消             Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();            if (xlApp == null)            {                MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");                return;            }            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;            Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1            //写入标题            for (int i = 0; i < myDGV.ColumnCount; i++)            {                worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;            }            //写入数值            for (int r = 0; r < myDGV.Rows.Count; r++)            {                for (int i = 0; i < myDGV.ColumnCount; i++)                {                    worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;                }                System.Windows.Forms.Application.DoEvents();            }            worksheet.Columns.EntireColumn.AutoFit();//列宽自适应            //if (Microsoft.Office.Interop.cmbxType.Text != "Notification")            //{            //    Excel.Range rg = worksheet.get_Range(worksheet.Cells[2, 2], worksheet.Cells[ds.Tables[0].Rows.Count + 1, 2]);            //    rg.NumberFormat = "00000000";            //}            if (saveFileName != "")            {                try                {                    workbook.Saved = true;                    workbook.SaveCopyAs(saveFileName);                    //fileSaved = true;                }                catch (Exception ex)                {                    //fileSaved = false;                    MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);                }            }            //else            //{            //    fileSaved = false;            //}            xlApp.Quit();            GC.Collect();//强行销毁             // if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL            MessageBox.Show(fileName + "的简明资料保存成功", "提示", MessageBoxButtons.OK);        }        #endregion



热点排行