DevExpress 利用动态创建GridControl导出Excel,并不显示在界面上

时间:2025-04-17 22:51:04
正常情况下,GridControl显示在界面上直接导出数据到excel是没问题的,
在动态创建的时候如果不显示在界面上并不会把数据导到excel,一般的解决方法都是先添加导出后再隐藏或者释放掉,这种方法虽然如愿导出了数据,但是,想一想,这不是很多余么。
大伙有没有想过为什么显示到界面的时候才能导出数据内容呢?其实原理很简单,当对GridControl绑定数据的时候,就会在Form上实例化了 BindingContext对象,Ok知道这个情况,这样问题就很好解决了,只要在代码中直接实例化这个对象不就不需要到Form上自动实例化了么,

利用这个原理写了以下方法

/// <summary>
        /// 通过GridControl导出Excel
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="fileName"></param>
        public static void ExportByGridControl(DataTable dt,string fileName)
        {
            using ( dlg = new ("请稍等", "保存中...", new Size(100, 50)))
            {
                try
                {
                    GridControl grid = new GridControl();
                     = new BindingContext();//绑定内容实例,否则需要在界面显示才会自动实例
                    GridView view = new GridView(grid);
                     = view;
                     = dt;
                    ();//强制初始化
                    (fileName);
                    if(== ("导出成功,是否打开文件","提示",,))
                        (fileName);
                }
                catch(Exception ex)
                {
                    ("导出失败:" + );
                }
            }
        }
        void MethodTest()
        {
            DataTable dt = new DataTable();
            ("Name");
            ("涛神厉害");
            ("涛神牛逼");
            ExportByGridControl(dt, "E:\\涛神.xlsx");
        }