winform中 将DataGrid中的数据导入Excel中,并显示Excel应用程序

/// <summary>
         /// 将DataGrid中的数据导入Excel中,并显示Excel应用程序,

         /// 注意调用该方法必须有安装Excel 2000应用程序,并且假定DataGrid中绑定的是一DataSet
         /// </summary>
         /// <param name="grid"></param>
         /// <param name="ReportTitle"></param>
         public  static  void ExportDataGridToExcel (DataGrid grid , string ReportTitle )
         {
            DataTable myTable  =  ( (DataSet )grid .DataSource ) .Tables [0 ] ;

             try
             {
                Excel .Application xlApp  =  new Excel .ApplicationClass ( ) ;

                 int rowIndex ;
                 int colIndex ;

                rowIndex  = 2 ;
                colIndex  = 0 ;

                Excel .Workbook xlBook  =xlApp .Workbooks .Add ( true ) ;

                

                 if  (grid .TableStyles .Count  >) 
                 {
                    Excel .Range range  = xlApp .get_Range (xlApp .Cells [1 ,1 ] ,xlApp .Cells [1 ,grid .TableStyles [0 ] .GridColumnStyles .Count ] ) ;
                    range .MergeCells  =  true ;
                    xlApp .ActiveCell .FormulaR1C1   = ReportTitle ;
                    xlApp .ActiveCell .Font .Size   = 18 ;
                    xlApp .ActiveCell .Font .Bold  =  true ; 

                     foreach (DataGridColumnStyle colu  in grid .TableStyles [0 ] .GridColumnStyles )
                     {
                        colIndex =colIndex  +1 ;
                        xlApp .Cells [2 ,colIndex ]  = colu .HeaderText  ;
                     }

                     //得到的表所有行,赋值给单元格

                     for  ( int row  = 0 ;row  < myTable .Rows .Count ;row + + )
                     {
                        rowIndex  = rowIndex  + 1 ;
                        colIndex  = 0 ;
                         for  ( int col =0 ;col <grid .TableStyles [0 ] .GridColumnStyles .Count ;col + + )
                         {
                            colIndex  = colIndex  + 1 ;
                            xlApp .Cells [rowIndex , colIndex ]  = grid [row ,col ] .ToString ( ) ;
                         }                    
                     }
                 }
                 else
                 { 
                    Excel .Range range  = xlApp .get_Range (xlApp .Cells [1 ,1 ] ,xlApp .Cells [1 ,myTable .Columns .Count ] ) ;
                    range .MergeCells  =  true ;
                    xlApp .ActiveCell .FormulaR1C1   = ReportTitle ;
                    xlApp .ActiveCell .Font .Size   = 18 ;
                    xlApp .ActiveCell .Font .Bold  =  true ;
                    
                     //将表中的栏位名称填到Excel的第一行

                     foreach (DataColumn Col  in myTable .Columns )
                     {
                        colIndex  = colIndex  + 1 ;
                        xlApp .Cells [2 , colIndex ]  = Col .ColumnName ;                
                     }

                     //得到的表所有行,赋值给单元格

                     for  ( int row  = 0 ;row  < myTable .Rows .Count ;row + + )
                     {
                        rowIndex  = rowIndex  + 1 ;
                        colIndex  = 0 ;
                         for  ( int col =0 ;col <myTable .Columns .Count ;col + + )
                         {
                            colIndex  = colIndex  + 1 ;
                            xlApp .Cells [rowIndex , colIndex ]  = grid [row ,col ] .ToString ( ) ;
                         }                    
                     }
                 }

                

            
                xlApp .get_Range (xlApp .Cells [2 , 1 ] , xlApp .Cells [2 , colIndex ] ) .Font .Bold  =  true ;
                xlApp .get_Range (xlApp .Cells [2 , 1 ] , xlApp .Cells [rowIndex , colIndex ] ) .Borders .LineStyle  = 1 ;          

                xlApp .Cells .EntireColumn .AutoFit ( ) ;
                xlApp .Cells .VerticalAlignment  = Excel .Constants .xlCenter  ;
                xlApp .Cells .HorizontalAlignment  = Excel .Constants .xlCenter  ;
        

                xlApp .Visible  =  true ;            
             }
             catch (Exception e )
             {
                 throw e ;
             }
            


         }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值