WinForm DataGrid>>Excel


using office    =Microsoft.Office .Interop ;
  /// <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 >0 ) 
                
{
                    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[
21], xlApp.Cells[2, colIndex]).Font.Bold = true;
                xlApp.get_Range(xlApp.Cells[
21], 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;
            }

            


        }


///
// 仅仅导出看到的数据
            myTable     =  DT.DefaultView.Table .Clone ();

            
for    ( int    i = 0 ;   i    <     DT.DefaultView.Count;   i ++ )  
            
{  
                myTable.ImportRow( DT.DefaultView[i].Row);  
            }
   
 
格式化文本框

...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值