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;
            }
            


        }
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值