注:本文所使用的DevExpress的版本为DevExpress 14.1.4版
DevExpress winform的开发中,可能会遇到将gridcontrol的视图(GridView)数据导出到指定格式文件的需求,查了一下DevExpress的文档,其提供了几种导出文件格式的方法,如:ExportToText,ExportToCsv,ExportToPdf,ExportToXls,ExportToHtml等等,具体见下图:
直接运用DevExpress提供了这些方法可以快速地导出GridControl数据,每个方法都有几个重载方法,以适应更多的场景使用。但如果只想导出一个GridControl的某列或者某些指定列时,以上的就没有对应的重载方法。这时得我们自己来获取对应的列,然后进行数据的后期处理,我用了GridView的GetRowCellValue(int rowHandle,string fieldName)这个方法来获取一行中的某列数据,然后组装数据以实现导出功能。
具体的代码片断如下(这是项目中的一部分,仅供参考):
直接运用DevExpress提供了这些方法可以快速地导出GridControl数据,每个方法都有几个重载方法,以适应更多的场景使用。但如果只想导出一个GridControl的某列或者某些指定列时,以上的就没有对应的重载方法。这时得我们自己来获取对应的列,然后进行数据的后期处理,我用了GridView的GetRowCellValue(int rowHandle,string fieldName)这个方法来获取一行中的某列数据,然后组装数据以实现导出功能。
具体的代码片断如下(这是项目中的一部分,仅供参考):
if (gViewProxy.SelectedRowsCount <= 0)
{
XtraMessageBox.Show("请选择至少一行记录");
return;
}
_sfd.RestoreDirectory = false;
_sfd.Title = "指定文件保存目录";
_sfd.DefaultExt = "txt";
var proxyDir = Path.Combine(Environment.CurrentDirectory, "Proxy");
if (!Directory.Exists(proxyDir))
{
Directory.CreateDirectory(proxyDir);
}
_sfd.InitialDirectory = proxyDir; //Path.Combine(proxyDir, DateTime.Now.ToString("yyyyMMddHHmmss"));
_sfd.FileName = string.Format("{0}.txt", DateTime.Now.ToString("yyyyMMddHHmmss"));
var dr = _sfd.ShowDialog();
if (dr == DialogResult.OK)
{
var fileName = _sfd.FileName;
gViewProxy.ExportToXls(fileName);
using (var stream = File.Open(fileName, FileMode.Create))
{
using (var sw = new StreamWriter(stream))
{
var rows = gViewProxy.GetSelectedRows();
var sb = new StringBuilder();
foreach (var row in rows)
{
sb.AppendLine(string.Format("{0}:{1}", gViewProxy.GetRowCellValue(row, "Host").ToString(), gViewProxy.GetRowCellValue(row, "Port").ToString()));
}
await sw.WriteAsync(sb.ToString());
}
}
statusLeft.Caption = string.Format("成功保存至:{0}", fileName);
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册