string  saveFileName;
        Boolean fileSaved  =false ;        SaveFileDialog  saveDialog  = new  SaveFileDialog();
        saveDialog.DefaultExt  = "csv";
        saveDialog.Filter = "Excel文件|*.csv";
        saveDialog.FileName = "Sheet1";
        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
        Microsoft.Office.Interop.Excel.Range range ;
        String  oldCaption  = this.Text ;
        long  totalCount = ds.Tables[0].Rows.Count;
        long  rowRead  = 0;
        Double percent   = 0;        worksheet.Cells[1, 1] =this.Text ;
        //写入字段
                int columncount;
        int rowcount;
      
            columncount = this.dataGridView1.ColumnCount;
            rowcount = this.dataGridView1.RowCount;
            for (int m = 1; m <= columncount; m++)
            {
                worksheet.Cells[1, m] = this.dataGridView1.Columns[m-1].HeaderText;//去除dataGridView1的编号列
            }
            for (int i = 0; i < rowcount-1; i++)
            {
                for (int j = 1; j <= columncount; j++)
                {
                    //worksheet.Cells[i + 2, j] = this.dataGridView1.Rows[i].Cells[j-1].Value.ToString();
                    worksheet.Cells[i + 2, j] ="'"+ ds.Tables [0].Rows[i][j - 1].ToString();
                }
                rowRead = rowRead + 1;
                percent = ((100 * rowRead)) / totalCount;
                this.Text = "正在导出数据[" + percent.ToString("0.00") + "%]...";
                System.Windows.Forms.Application.DoEvents();
            }
我写的代码如上,