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

DataGridView导出Excel有关问题

2013-07-09 
DataGridView导出Excel问题我使用了一个datagridview控件,用数据源绑定了。我想在FORM上设置一个Button,用

DataGridView导出Excel问题
我使用了一个datagridview控件,用数据源绑定了。我想在FORM上设置一个Button,用来将datagridview当前显示的数据导出成Excel格式。请问大家具体怎么执行了,最好能给出详细的代码。
[解决办法]

public static void DataGridViewToExcel(DataGridView dgv)  
        {                     
             #region   验证可操作性  
             //申明保存对话框   
             SaveFileDialog dlg = new SaveFileDialog();  
             //默然文件后缀   
             dlg.DefaultExt = "xls ";  
             //文件后缀列表   
             dlg.Filter = "EXCEL文件(*.XLS)
[解决办法]
*.xls ";  
             //默然路径是系统当前路径   
             dlg.InitialDirectory = Directory.GetCurrentDirectory();  
             //打开保存对话框   
             if (dlg.ShowDialog() == DialogResult.Cancel) return;  
             //返回文件路径   
             string fileNameString = dlg.FileName;  
             //验证strFileName是否为空或值无效   
             if (fileNameString.Trim() == " ")  
             { return; }  
             //定义表格内数据的行数和列数   
             int rowscount = dgv.Rows.Count;  
             int colscount = dgv.Columns.Count;  
             //行数必须大于0   
             if (rowscount <= 0)  
             {  
                 MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  


                 return;  
             }  
           
             //列数必须大于0   
             if (colscount <= 0)  
             {  
                 MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
                 return;  
             }  
           
             //行数不可以大于65536   
             if (rowscount > 65536)  
             {  
                 MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
                 return;  
             }  
           
             //列数不可以大于100   
             if (colscount > 100)  
             {  
                 MessageBox.Show("数据记录列数太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
                 return;  
             }  
           
             //验证以fileNameString命名的文件是否存在,如果存在删除它   
             FileInfo file = new FileInfo(fileNameString);  
             if (file.Exists)  
             {  
                 try  
                 {  
                     file.Delete();  
                 }  
                 catch (Exception error)  


                 {  
                     MessageBox.Show(error.Message, "删除失败 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);  
                     return;  
                 }  
             }  
             #endregion  
             Microsoft.Office.Interop.Excel.Application objExcel = null;  
             Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;  
             Microsoft.Office.Interop.Excel.Worksheet objsheet = null;  
             try  
             {  
                 //申明对象   
                 objExcel = new Microsoft.Office.Interop.Excel.Application();  
                 objWorkbook = objExcel.Workbooks.Add(Missing.Value);  
                 objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet;  
                 //设置EXCEL不可见   
                 objExcel.Visible = false;  
           
                 //向Excel中写入表格的表头   
                 int displayColumnsCount = 1;  
                 for (int i = 0; i <= dgv.ColumnCount - 1; i++)  
                 {  
                     if (dgv.Columns[i].Visible == true)  
                     {  
                         objExcel.Cells[1, displayColumnsCount] = dgv.Columns[i].HeaderText.Trim();  
                         displayColumnsCount++;  
                     }  


                 }  
                 //设置进度条   
                 //this.tempProgressBar.Refresh();
                 //this.tempProgressBar.Visible = true;
                 //this.tempProgressBar.Minimum = 1;
                 //this.tempProgressBar.Maximum = dgv.RowCount;
                 //this.tempProgressBar.Step = 1;   
                 //向Excel中逐行逐列写入表格中的数据   
                 for (int row = 0; row <= dgv.RowCount - 1; row++)  
                 {  
                     //this.tempProgressBar.PerformStep();   
           
                     displayColumnsCount = 1;  
                     for (int col = 0; col < colscount; col++)  
                     {  
                         if (dgv.Columns[col].Visible == true)  
                         {  
                             try  
                             {  
                                 objExcel.Cells[row + 2, displayColumnsCount] = dgv.Rows[row].Cells[col].Value.ToString().Trim();  
                                 displayColumnsCount++;  
                             }  
                             catch (Exception)  


                             {  
           
                             }  
           
                         }  
                     }  
                 }  
                 //隐藏进度条   
                 //this.tempProgressBar.Visible   =   false;   
                 //保存文件   
                 objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,  
                         Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value,  
                         Missing.Value, Missing.Value);
             }  
             catch (Exception error)  
             {  
                 MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);  
                 return;  
             }  
             finally  
             {  
                 //关闭Excel应用   
                 if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);  
                 if (objExcel.Workbooks != null) objExcel.Workbooks.Close();  
                 if (objExcel != null) objExcel.Quit();  
           
                 objsheet = null;  


                 objWorkbook = null;  
                 objExcel = null;  
             }  
             MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);  
         }


直接把datagridView 传进去就行

热点排行