private string ExportToExcel(string filename)
        {
            System.Threading.Thread thisThread = System.Threading.Thread.CurrentThread;
            System.Globalization.CultureInfo originalCulture = thisThread.CurrentCulture;
            object objOpt = System.Reflection.Missing.Value;
            try
            {
                object obj = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
                app.Visible = true;
                Workbooks workbooks = app.Workbooks;
                _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                Sheets sheets = workbook.Worksheets;
                _Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
                int ridx = 1;
                int cidx = 0;
                for (int i = 0; i < dataGridView1.ColumnCount; i++)
                {
                    worksheet.Cells[0, i] = dataGridView1.Columns[i].HeaderText;
                }
                if (dataGridView1.RowCount > 0)
                {
                    for (int j = 0; j < dataGridView1.RowCount;j++)
                    {
                        for (int k = 0; k < dataGridView1.ColumnCount; k++)
                        {
                            worksheet.Cells[ridx, cidx] = dataGridView1[j, k].Value.ToString();
                            cidx++;
                        }
                        ridx++;
                    }
                }
                workbook.SaveAs(filename,obj,obj,obj,obj,obj,XlSaveAsAccessMode.xlExclusive,obj,obj,obj,obj,obj);
                workbook.Saved = true;
    app.UserControl = false;
    app.Quit();
                return "导出[" + filename + "]成功";
            }
            catch (Exception _e)
            {
                return "导出失败,原因:\n" + _e.Message;
            }
            finally
            {
                thisThread.CurrentCulture = originalCulture;
            }
        }

解决方案 »

  1.   

    public static void ExportDataGridViewToExcel(DataGridView dataGridview1)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.RestoreDirectory = true;
                saveFileDialog.CreatePrompt = true;
                saveFileDialog.Title = "导出Excel文件到";            //saveFileDialog.ShowDialog();
                if (saveFileDialog.ShowDialog()==DialogResult.OK)
                {            
                    Stream myStream;
                    myStream = saveFileDialog.OpenFile();
                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
                    string str = "";
                    try
                    {                    //写标题  
                        for (int i = 0; i < dataGridview1.ColumnCount; i++)
                        {
                            if (i > 0)
                            {
                                str += "\t";
                            }
                            str += dataGridview1.Columns[i].HeaderText;
                        }                    sw.WriteLine(str);
                        //写内容 
                        for (int j = 0; j < dataGridview1.Rows.Count - 1; j++)
                        {
                            string tempStr = "";
                            for (int k = 0; k < dataGridview1.Columns.Count; k++)
                            {
                                if (k > 0)
                                {
                                    tempStr += "\t";
                                }
                                tempStr += dataGridview1.Rows[j].Cells[k].Value.ToString();
                            }
                            sw.WriteLine(tempStr);
                        }
                        sw.Close();
                        myStream.Close();
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.ToString());
                    }
                    finally
                    {
                        sw.Close();
                        myStream.Close();
                        MessageBox.Show("ok");
                    }
                 }
            }
      

  2.   

    运行的时候报错。
    jonasLIAO() 。你的方法不是写excel的。
    请哪位高人给点建议。或者例程。
      

  3.   

    if (MessageBox.Show("你確認要導出數據到EXCEL嗎!", "提示", System.Windows.Forms.MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
                 {
                     this.saveFileDialog1.AddExtension = true;
                     this.saveFileDialog1.DefaultExt = "xls";
                     saveFileDialog1.Filter = "*.xls|xls";
                     this.saveFileDialog1.ShowDialog();
                     FileName = this.saveFileDialog1.FileName;
                     if (FileName == "")
                     {
                         return;
                     }
                 }
            
                 String cmd = "SELECT a.user_id , a.user_ename, a.user_cname, a.update_user, a.update_time FROM wms_user a";
                 CDBmySQL dbALM = new CDBmySQL(clsGol.DBDataBase, clsGol.DBServerName, clsGol.DBUserName, clsGol.DBUserPassWord);
                 DataTable dt = dbALM.GetDataTable("wms_user", cmd);
                 //System.Data.DataTable dt = new System.Data.DataTable();             long totalCount = dt.Rows.Count;
                 long rowRead = 0;
                 float percent = 0;
                 Excel.Application xlApp = null;
                 xlApp = new Excel.Application();
                 Excel.Workbooks workbooks = xlApp.Workbooks;
                 Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
                 Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
                 Excel.Range range;
                 worksheet.Cells[1,1] = "員工編號";
                 worksheet.Cells[1, 2] = "英文名稱";
                 worksheet.Cells[1, 3] = "中文名稱";
                 worksheet.Cells[1, 4] = "修改者";
                 worksheet.Cells[1, 5] = "修改時間";
                 range = (Excel.Range)worksheet.Cells[1, 5];
                 for (int r = 0; r < dt.Rows.Count; r++)
                 {
                     worksheet.Cells[r + 2, 1] = r + 1;
                     for (int i = 0; i < dt.Columns.Count; i++)
                     {
                         //worksheet.Cells[r+2,i+1]=dt.Rows[r][i];
                         if (i + 1 != dt.Columns.Count+1)
                             worksheet.Cells[r + 2, i + 1] = dt.Rows[r][i];
                     }
                     rowRead++;
                     percent = ((float)(100 * rowRead)) / totalCount;
                     System.Windows.Forms.Application.DoEvents();
                 }
                 range = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 2, dt.Columns.Count]);
                 workbook.Saved = true;
                 workbook.SaveCopyAs(FileName);
      

  4.   

    上面的那段代码发的人,能不能顺便把Excel需要的引用,以及它所在的类写一下呀,否则没办法用阿
      

  5.   

    更改控制面板中本地区域设置为英语(美国)看看,或者
    System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); // 0x0409
    System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;完成后设置为zh-CN,要么去掉!
      

  6.   

    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/dv_wrcore/html/wrconglobalizinglocalizingofficesolutions.asp
      

  7.   

    Ryanjing写的代码没问题,我测试过了,不过要添加一个com+引用,是mircoft excel 11.0 object library;