WPF及Silverlight中将DataGrid数据导出
来源:互联网 发布:淘宝客如何找商家 编辑:程序博客网 时间:2024/05/19 13:23
这段源码是我在项目中实际应用的源码,没有经过删减及处理。 如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。 /// 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
{
/// <summary>
/// 导出到文本
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="splitString">分隔符</param>
/// <param name="columns">导出的列(为null时表示全部导出)</param>
/// <returns>文本数据</returns>
public static string Export2Text(IEnumerable dataSource,string splitString,DataGridColumn[] columns,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)
{
foreach (DataColumn objHeaderpi in dataView.Table.Columns)
{
if (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;
if (col 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 != null)
{
if (strValue != "")
strValue = objBinding.Converter.Convert(strValue, typeof(string), objBinding.ConverterParameter, objBinding.ConverterCulture).ToString();
else
strValue = objBinding.Converter.Convert(data, typeof(string), objBinding.ConverterParameter, objBinding.ConverterCulture).ToString();
}
}
sbResult.Append(strValue.Replace(',', ',') + splitString);
}
sbResult.AppendLine();
}
}
return sbResult.ToString();
}
public static 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();
}
/// <summary>
/// 导出为平面文本
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="columns">选择要导出的列</param>
/// <returns>平面文本</returns>
public static string Export2FlotText(IEnumerable dataSource,DataGridColumn[] columns,bool isVisiableColumn)
{
return Export2Text(dataSource, "\t", columns, isVisiableColumn);
}
/// <summary>
/// 导出为平面文本
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="columns">选择要导出的列</param>
/// <returns>平面文本</returns>
public static string Export2FlotCSV(IEnumerable dataSource,DataGridColumn[] columns,bool isVisiableColumn)
{
return Export2Text(dataSource, ",", columns, isVisiableColumn);
}
}
/// 数据源导出辅助类
/// </summary>
/// <remarks>
/// Author: sucsy
/// Create date: 2011-6-17
/// Description: 提供基于数据源(公共枚举器类型)的数据导出辅助功能
/// </remarks>
public class DataSourceExportHelper
{
/// <summary>
/// 导出到文本
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="splitString">分隔符</param>
/// <param name="columns">导出的列(为null时表示全部导出)</param>
/// <returns>文本数据</returns>
public static string Export2Text(IEnumerable dataSource,string splitString,DataGridColumn[] columns,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)
{
foreach (DataColumn objHeaderpi in dataView.Table.Columns)
{
if (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;
if (col 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 != null)
{
if (strValue != "")
strValue = objBinding.Converter.Convert(strValue, typeof(string), objBinding.ConverterParameter, objBinding.ConverterCulture).ToString();
else
strValue = objBinding.Converter.Convert(data, typeof(string), objBinding.ConverterParameter, objBinding.ConverterCulture).ToString();
}
}
sbResult.Append(strValue.Replace(',', ',') + splitString);
}
sbResult.AppendLine();
}
}
return sbResult.ToString();
}
public static 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();
}
/// <summary>
/// 导出为平面文本
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="columns">选择要导出的列</param>
/// <returns>平面文本</returns>
public static string Export2FlotText(IEnumerable dataSource,DataGridColumn[] columns,bool isVisiableColumn)
{
return Export2Text(dataSource, "\t", columns, isVisiableColumn);
}
/// <summary>
/// 导出为平面文本
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="columns">选择要导出的列</param>
/// <returns>平面文本</returns>
public static string Export2FlotCSV(IEnumerable dataSource,DataGridColumn[] columns,bool isVisiableColumn)
{
return Export2Text(dataSource, ",", columns, isVisiableColumn);
}
}
本文来自旧木的博客,原文地址:http://www.cnblogs.com/sucsy/archive/2011/09/23/2186242.html
- WPF及Silverlight中将DataGrid数据导出
- Silverlight 中将DataGrid中所有分页导出到Excel
- wpf中将数据导出为Excel
- NPOI导出WPF DataGrid控件显示数据
- WebForm中将DataGrid中导出数据的方法
- Silverlight 4中把DataGrid数据导出Excel
- 在WPF中将DataGrid的SelectedItems
- wpf导出DataGrid到Excel
- WPF DataGrid导出到Excel
- Silverlight 4 DataGrid动态生成列及绑定数据
- wpf datagrid 数据绑定
- wpf datagrid显示数据
- WPF数据绑定DataGrid
- WPF DataGrid数据刷新
- asp.net中将DataGrid数据导出到excel或word文件中
- MVC中将数据导出Excel
- asp.net中将数据导出
- silverlight开发:将datagrid中的数据导出为Excel和CSV文件
- 关于python模块自动安装(setuptools)
- Judging Olympia
- 申请的阿里云服务器一定要记得挂载数据盘
- 程序员总结:帮助你早些明白一些道理
- 多媒体视频处理的一些基本概念
- WPF及Silverlight中将DataGrid数据导出
- Hadoop集群搭建的常见错误
- LINQ to SQL快速上手 step by step
- 省赛前第二场周赛题目列表
- C++学习笔记12——重载操作符与转换
- C语言字节对齐
- ORACLE 插入DATE类型字段
- C++开源库,欢迎补充。
- linux 打包 压缩 解压缩 等命令