这段源码是我在项目中实际应用的源码,没有经过删减及处理。
如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。
/// <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数据导出所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)