Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用以编程方式创建的DevExpress GridView将DataTable导出到Excel_C#_.net_Winforms_Devexpress_Xtragrid - Fatal编程技术网

C# 使用以编程方式创建的DevExpress GridView将DataTable导出到Excel

C# 使用以编程方式创建的DevExpress GridView将DataTable导出到Excel,c#,.net,winforms,devexpress,xtragrid,C#,.net,Winforms,Devexpress,Xtragrid,我正在尝试使用以编程方式创建的DevExpress GridControl将数据表导出到Excel。我的代码导出GridView列,但没有任何填充的数据行。以下是示例代码(tblErrors是传递给方法的DataTable参数): 关于我遗漏了什么有什么想法吗?在您调用视图时。ExportToXlsx此视图(以及整个GridControl)未最终初始化并加载数据。 您可以非常简单地检查它-只需在view.ExportToXlsx调用上设置断点,您就可以看到此时view.RowCount==0,所

我正在尝试使用以编程方式创建的DevExpress GridControl将数据表导出到Excel。我的代码导出GridView列,但没有任何填充的数据行。以下是示例代码(tblErrors是传递给方法的DataTable参数):


关于我遗漏了什么有什么想法吗?

在您调用
视图时。ExportToXlsx
此视图(以及整个GridControl)未最终初始化并加载数据。
您可以非常简单地检查它-只需在
view.ExportToXlsx
调用上设置断点,您就可以看到此时
view.RowCount==0
,所以还没有导出任何内容

事实上,当控件变得可见时,就会发生这种“最终初始化”。但是在您的代码中,您没有将
control
添加到表单或UserControl的
Controls
集合中,因此实际上它将永远不可见,并且没有行

如果它是预期的行为,并且您只想使用GridControl作为某种“适配器”将数据从dataTable导出到Excel,而不在表单上显示此GridControl,那么您可以做一些类似以下的技巧

control.DataSource = tblErrors;
Controls.Add(control);
control.ForceInitialize();
view.ExportToXlsx(....
Control.Remove(control);
注意:如果
tblErrors
中的数据量很大,因为控件实际添加到表单中,然后强制初始化、导出数据,然后从表单中删除控件,则可能会导致控件出现一些“闪烁”

对我来说,这不是将数据从dataTable导出到Excel的最佳方法。考虑使用一些库来直接写入Excel文件,例如,NPOI.

更新


经过一些思考-您可以通过设置
control.Visible=false来防止我提到的“闪烁”。但从我的角度来看,使用GridControl的这种方法仍然不是最好的。

谢谢Andy,我真的很感谢你的帮助。这是我希望的工作方式。我也会看看你推荐的NPOI图书馆。
control.DataSource = tblErrors;
Controls.Add(control);
control.ForceInitialize();
view.ExportToXlsx(....
Control.Remove(control);