这段源码是我在项目中实际应用的源码,没有经过删减及处理。 如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。 /// 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);
}
}
数据源导出辅助类
</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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。