在C#中,我将SQL条件查询的ACCESS记录存入DataView2表中显示,但是我想同时将该DataView2中显示的数据存入EXCEL文件,请问该怎样书写"DataView2数据到EXCEL"这段代码,望大家指导,谢谢

解决方案 »

  1.   

            private void ExportExcel(string fileName, DataGridView myDGV)
            {
                string saveFileName = "";
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.DefaultExt = "xls";
                saveDialog.Filter = "Excel文件|*.xls";
                saveDialog.FileName = fileName;
                if (saveDialog.ShowDialog() == DialogResult.OK)
                {
                    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++)
                    {
                        if (i +1 >= myDGV.ColumnCount)
                            break;
                        worksheet.Cells[1, i + 1] = myDGV.Columns[i + 1].HeaderText;
                    }
                    //写入数值
                    int a = -1;
                    for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                    {
                        if (this.dataGridView1.Rows[i].Cells["Column11"].Value == null)
                        {
                           
                            continue;
                        }
                        if ((bool)this.dataGridView1.Rows[i].Cells["Column11"].Value)
                        {
                            //for (int r = 0; r < myDGV.Rows.Count; r++)
                            //{
                            a++;
                                for (int j = 1; j < myDGV.ColumnCount; j++)
                                {
                                    worksheet.Cells[a+2, j] = myDGV.Rows[i].Cells[j].Value;
                                //}
                                System.Windows.Forms.Application.DoEvents();
                            }                    }
                    }
                    worksheet.Columns.EntireColumn.AutoFit();//列宽自适应    
                    if (saveFileName != "")
                    {
                        try
                        {
                            workbook.Saved = true;
                            workbook.SaveCopyAs(saveFileName);
                        }
                        catch (Exception ex)
                        {                        MessageBox.Show("导出文件时出错,文件可能正被打开");
                        }
                    }
                    xlApp.Quit();
                    GC.Collect();//强行销毁 
                    MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK);
                }
            }
      

  2.   

    参考:http://blog.csdn.net/gisfarmer/archive/2009/01/09/3738959.aspx
      

  3.   

    告别excel操作烦恼http://www.cnblogs.com/peaceli/archive/2008/04/13/1151520.htmlhttp://www.cnblogs.com/peaceli/archive/2008/04/13/1151520.html
      

  4.   

    谢谢三楼的回答,
    可是我将此代码运行时,出现如理错误:
    找不到类型或命名空间名称“dataGridView”(是否缺少 using 指令或程序集引用?)请问是什么原因?