【原】将datagridview里的数据导出到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(":"< 0return//被点了取消
            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;
                worksheet.get_Range(worksheet.Cells[
11], worksheet.Cells[1, i + 1]).Font.Bold = true;
            }
            
//写入数值
            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();
            }
            
if (saveFileName != "")
            {
                
try
                {
                    workbook.Saved 
= true;
                    workbook.SaveCopyAs(saveFileName);
                }
                
catch (Exception ex)
                {
                    MessageBox.Show(
"导出文件时出错,文件可能正被打开!\n" + ex.Message);
                }

            }

            xlApp.Quit();
            GC.Collect();
//强行销毁
            
// if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
            MessageBox.Show(fileName + "保存成功""提示", MessageBoxButtons.OK);
        }

 

posted @ 2010-05-15 15:31  哥本哈根  阅读(302)  评论(0编辑  收藏  举报