在动态创建的时候如果不显示在界面上并不会把数据导到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");
}