DataGridView中数据导入Excel表

1.先添加"Microsoft.Office.Interop.Excel".NET组件的引用

2.创建一个ApplicationClass 对象,该对象位于Excel命名空间

3.使用ApplicationClass 对象添加一个工作簿

4.导出数据、保存文件,退出Excel.ApplicationClass

完整代码:

        public void DataGridView2Excel(DataGridView dgv)
        {
            
//行数必须大于0
            if (dgv.Rows.Count <= 0)
            {
                MessageBox.Show(
"没有数据可供导出!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
return;
            }
            
//列数必须大于0
            if(dgv.Columns.Count<=0)
            {
                MessageBox.Show(
"没有数据可供导出!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                
return;
            }
            
//行数不可以大于65536
            if(dgv.Rows.Count>65536)
            {
                MessageBox.Show(
"数据记录数太多(最多不能超过65536条),不能保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                
return;
            }
            
//列数不可以大于256
            if(dgv.Columns.Count>256)
            {
                MessageBox.Show(
"数据记录数太多(做多不能超过256列),不能保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                
return;
            }
            SaveFileDialog dlg 
= new SaveFileDialog();
            dlg.Filter 
= "Excel files (*.xlsx)|*.xlsx";
            dlg.FilterIndex 
= 0;
            dlg.RestoreDirectory 
= true;
            dlg.CreatePrompt 
= false;
            dlg.Title 
= "保存为Excel文件";
            
if (dlg.ShowDialog() == DialogResult.OK)
            {
                
////验证以dlg.FileName命名的文件是否存在,如果存在删除它
                //FileInfo file=new FileInfo(dlg.FileName);
                
//if(file.Exists)
                
//{
                
//    try
                
//    {
                
//        if(MessageBox.Show(dlg.FileName+"已经存在,是否删除?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.OK)
                
//        {
                
//            file.Delete();
                
//        }
                
//        else
                
//        {
                
//            return;
                
//        }
                
//    }
                
//    catch(Exception ex)
                
//    {
                
//        MessageBox.Show(ex.Message,"删除失败",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                
//        return;
                
//    }
                
//}
                
//创建一个ApplicationClass对象,该对象位于Excel命名空间
                Excel.ApplicationClass ExcelApp = new Excel.ApplicationClass();
                
//使用ApplicationClass对象添加一个工作薄
                ExcelApp.Application.Workbooks.Add(Type.Missing);              
               
                
//设置工作薄列宽
                
//ExcelApp.Columns.ColumnWidth = 30;
                
//列宽自适应
                ExcelApp.Columns.EntireColumn.AutoFit();
                
try
                {
                    
//向Excel中写入表格的表头
                    for (int i = 0; i < dgv.Columns.Count; i++)
                    {
                        ExcelApp.Cells[
1, i + 1= dgv.Columns[i].HeaderText;
                    }
                    
//向Excel中逐行逐列写入表格中的数据
                    for (int i = 0; i < dgv.Rows.Count; i++)
                    {
                        DataGridViewRow row 
= dgv.Rows[i];
                        
for (int j = 0; j < row.Cells.Count; j++)
                        {
                            ExcelApp.Cells[i 
+ 2, j + 1= row.Cells[j].Value;
                        }
                    }
                    
//保存到文件
                    ExcelApp.ActiveWorkbook.SaveCopyAs(dlg.FileName);
                    ExcelApp.ActiveWorkbook.Saved 
= true;
                    
//退出Excel
                    
//ExcelApp.Quit();
                }
                
catch(Exception ex)
                {
                    MessageBox.Show(ex.Message,
"警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                    
return;
                }
                
finally
                {
                    
//关闭Excel应用,退出Excel
                    if(ExcelApp.Workbooks!=null)
                    {
                        ExcelApp.Workbooks.Close();
                    }
                    
if(ExcelApp!=null)
                    {
                        ExcelApp.Quit();
                    }
                }
                MessageBox.Show(dlg.FileName
+"\n\n导出完毕!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

 

 

posted on 2011-07-05 15:17  Lemon_s  阅读(259)  评论(0)    收藏  举报

导航