WPF及Silverlight中将DataGrid数据导出

WPF及Silverlight中将DataGrid数据导出,第1张

概述这段源码是我在项目中实际应用的源码,没有经过删减及处理。 如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。 /// summary /// 数据源导出辅助类 /// /summary /// remarks /// Author:sucsy /// Createdate:2011-6-17 /// Description:提供基于数据源(公共枚举器类型)的数据导出辅助功能 /// /re 这段源码是我在项目中实际应用的源码,没有经过删减及处理。 如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。 /// summary /// 数据源导出辅助类 /// /summary /// remarks /// Author:sucsy /// Createdate:2011-6-17 /// Description:提供基于数据源(公共枚举器类型)的数据导出辅助功能 /// /remarks publi   

  这段源码是我在项目中实际应用的源码,没有经过删减及处理。

  如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。

    ///   <summary>
    
 数据源导出辅助类
    
</summary> <remarks>  Author:         sucsy
    
 Create date:    2011-6-17
    
 Description:    提供基于数据源(公共枚举器类型)的数据导出辅助功能
    
</remarks>
     public  class DataSourceExportHelper
    {
        
        
 导出到文本
        
<param name="dataSource"> 数据源 </param> <param name="splitString"> 分隔符 <param name="columns"> 导出的列(为null时表示全部导出) <returns> 文本数据 </returns>
         static  string Export2Text(IEnumerable dataSource,string splitString,DataGrIDColumn[] columns,255)">bool isVisiableColumn)
        {
             // 定义结果存放对象
            StringBuilder sbResult =  new StringBuilder();

             string[] columnheaders = GetSelectedColumns(columns);

             处理Datatable作为数据源的数据导出 *** 作
             if (dataSource  is System.Data.DataVIEw)
            {
                System.Data.DataVIEw dataVIEw = (System.Data.DataVIEw)dataSource;

                 加载数据标题
                 foreach (DataColumn objheaderpi  in dataVIEw.table.Columns)
                {
                     if (columns ==  null || columnheaders.Contains(objheaderpi.Columnname))
                        sbResult.Append(objheaderpi.Columnname + splitString);
                }

                sbResult.Appendline();

                 foreach (System.Data.DaTarowVIEw dr  in dataVIEw)
                {
                     in dataVIEw.table.Columns)
                    {
                         null || columnheaders.Contains(objheaderpi.Columnname))
                            sbResult.Append(dr[objheaderpi.Columnname].ToString() + splitString);
                    }
                    sbResult.Appendline();
                }
            }
             else
            {               
                 foreach (DataGrIDColumn dgcol  in columns)
                    sbResult.Append(dgcol.header.ToString() + splitString);

                sbResult.Appendline();

                 foreach ( object data  in dataSource)
                {
                     foreach (DataGrIDColumn col  in columns)
                    {
                         string strValue =  "";
                        Binding objBinding =  null;
                         if (col  is DataGrIDBoundColumn)
                            objBinding = (Binding)(col  as DataGrIDBoundColumn).Binding;

                         is DataGrIDTemplateColumn)
                        {
                            DependencyObject objDO = (col  as DataGrIDTemplateColumn).CellTemplate.LoadContent();
                            FrameworkElement oFE = (FrameworkElement)objDO;
                            FIEldInfo oFI = oFE.GetType().GetFIEld( " TextProperty ");
                             if (oFI !=  null)
                            {
                                 if (oFI.GetValue( null) !=  null)
                                {
                                     if (oFE.GetBindingExpression((DependencyProperty)oFI.GetValue( null)) !=  null)
                                        objBinding = oFE.GetBindingExpression((DependencyProperty)oFI.GetValue( null)).ParentBinding;
                                }
                            }
                        }
                         if (objBinding !=  null)
                        {
                             if (objBinding.Path.Path !=  "")
                            {
                                 string[] dataTree = objBinding.Path.Path.Split( . ".ToArray(), StringSplitoptions.RemoveEmptyEntrIEs);
                                 object parentData = data;
                                 for ( int treeIndex =  0; treeIndex < dataTree.Length; treeIndex++)
                                {
                                    PropertyInfo pData = parentData.GetType().GetProperty(dataTree[treeIndex]);

                                    parentData = pData.GetValue(parentData,  null);
                                }

                                 if (parentData !=  null) strValue = parentData.ToString();
                                
                            }
                             if (objBinding.Converter !=  if (strValue !=  "")
                                    strValue = objBinding.Converter.Convert(strValue,255)">typeof( string), objBinding.ConverterParameter, objBinding.ConverterCulture).ToString();
                                 else
                                    strValue = objBinding.Converter.Convert(data, objBinding.ConverterCulture).ToString();
                            }
                        }                       
                        sbResult.Append(strValue.Replace( ' , ' ') + splitString);
                    }
                    sbResult.Appendline();
                }

            }

             return sbResult.ToString();
        }
         string[] GetSelectedColumns(DataGrIDColumn[] columns)
        {
            List< string> columnsheader =  new List< string>();
             foreach (DataGrIDColumn column  in columns)
            {
                 if (column.Visibility == System.windows.Visibility.Visible)
                    columnsheader.Add(column.header.ToString());
            }

             return columnsheader.ToArray();
        }



          导出为平面文本
        
选择要导出的列 平面文本 string Export2Flottext(IEnumerable dataSource,255)">return Export2Text(dataSource,0)">\t ", columns, isVisiableColumn);
        }

         string Export2FlotCSV(IEnumerable dataSource, isVisiableColumn);
        }
    }

  本文来自旧木的博客,原文地址:http://www.cnblogs.com/sucsy/archive/2011/09/23/2186242.HTML

总结

以上是内存溢出为你收集整理的WPF及Silverlight中将DataGrid数据导出全部内容,希望文章能够帮你解决WPF及Silverlight中将DataGrid数据导出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存