DevExpress.XtraGrid 导出文本的bug

文章详细介绍了使用DevExpress(GridControl)在处理含有bool数据时,导出txt和csv格式数据出现的问题及解决方法。通过自定义代码实现数据正确导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

作者:不详 出处:Byeah's Blog  2011/4/8 15:47:38 阅读 434  次

  DevExpress.XtraGrid.GridControl有多个ExportToXXX的方法,提供多种格式的导出,极大节省了人力。如果 数据集里面有bool的数据,Grid就会显示成checkbox的形式,导出成pdf、excel当然是没有问题。但导出txt和csv格式时,对应 bool字段的值就会空白,没有任何数据导出。这个bug可以在XtraGrid的demo里面看到。导出数据空白的问题在官方资料中目前没有找到资料, 只好自己做了。

 Skelta BPM.NET(全球第一.NET工作流引擎) Visual WebGui (完美的用户界面解决方案)
 List & Label(图表报表生成控件) DXperience Uni Premium 白金版(慧都独家)

   以下是导出txt的代码,csv也是稍加修改即可实现。

private void ExportGridToTxt(GridView view, string path, char spliter)
         {
             if (view != null)
             {
                 StreamWriter sw = null;
                 try
                 {
                     sw = new StreamWriter(path, false, Encoding.Default);
                     StringBuilder sb = new StringBuilder();

                     for (int i = 0; i < view.Columns.Count; i++)
                     {
                         sb.Append(view.Columns[i].Caption + spliter);
                     }
                     sb.AppendLine();

                     for (int i = 0; i < view.RowCount; i++)
                     {
                         DataRow dr = view.GetDataRow(i);
                         for (int j = 0; j < view.Columns.Count; j++)
                         {
                             GridColumn col = view.Columns[j];
                             if (col.ColumnType == typeof(bool))
                             {
                                 bool val = (bool)(view.GetRowCellValue(i, col));
                                 sb.Append((bool)val ? "Y" : "N");
                             }
                             else
                             {
                                 string displayText = view.GetRowCellDisplayText(i, col);
                                 sb.Append(displayText);
                             }

                             if (j != view.Columns.Count - 1)
                             {
                                 sb.Append(spliter);
                             }
                             else
                             {
                                 sb.AppendLine();
                             }
                         }
                     }

                     sw.Write(sb.ToString());
                     sw.Flush();
                 }
                 finally
                 {
                     if (sw != null)
                     {
                         sw.Close();
                     }
                 }
             }
            
         }

转载于:https://www.cnblogs.com/gaoxuzhao/archive/2011/10/14/2212203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值