注:本文所使用的DevExpress的版本为DevExpress 14.1.4版
DevExpress winform的开发中,可能会遇到将gridcontrol的视图(GridView)数据导出到指定格式文件的需求,查了一下DevExpress的文档,其提供了几种导出文件格式的方法,如:ExportToText,ExportToCsv,ExportToPdf,ExportToXls,ExportToHtml等等,具体见下图:
直接运用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); }
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册