Dev Express WPF GridControl 数据导出到Excel
Dev Express WPF 给控件提供了公共的导出方法:
- Export to PDF
- Export to HTML
- Export to MHT
- Export to Text
- Export to CSV
- Export to XLS
- Export to XLSX
- Export to RTF
- Export to DOCX
- Export to Image
以导出数据到Excel表格为例:
导出模式分为两种类型: Data-Aware Export和 WYSIWYG Export
其中 WYSIWYG Export 模式支持导出结果保持GridControl设置的 PrintStyle,但在Excel中显示有写问题,同时性能也稍差一些,可能这是Dev 升级导出引擎的部分原因吧。
Data-Aware Export 模型导出数据则不支持PrintStyle,如果需要设置表格数据的展示样式,可以实现 CustomizeCell 事件;
测试代码:

<Window x:Class="GridExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:local="clr-namespace:GridExample"
Width="600" Height="350"
> <Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/GridExample;component/Themes/PrintCellStylesWPF.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources> <Grid VerticalAlignment="Top">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions> <dxg:GridControl Name="grid" AutoGenerateColumns="AddNew">
<dxg:GridControl.Columns> <dxg:GridColumn FieldName="PlainText"/> <dxg:GridColumn FieldName="MemoText"
PrintCellStyle="{StaticResource MemoColumnPrintingStyle}"
>
<dxg:GridColumn.EditSettings>
<dxe:MemoEditSettings/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn> <dxg:GridColumn FieldName="BooleanMember"
PrintCellStyle="{StaticResource CheckEditColumnPrintingStyle}"
>
<dxg:GridColumn.EditSettings>
<dxe:CheckEditSettings/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn> <dxg:GridColumn FieldName="Image"
PrintCellStyle="{StaticResource ImageColumnPrintingStyle}"
>
<dxg:GridColumn.EditSettings>
<dxe:PopupImageEditSettings/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn> </dxg:GridControl.Columns> <dxg:GridControl.View>
<dxg:TableView Name="view" PrintColumnHeaderStyle="{StaticResource HeaderStyle}"/>
</dxg:GridControl.View>
</dxg:GridControl> <Button Grid.Row="1" Width="150" Name="PrintButton" Click="PrintButton_Click" Content="Show print preview"/>
</Grid>
</Window>

// Developer Express Code Central Example:
// How to use the PrintCellStyle property to customize cell's printing appearance
//
// This example shows how to create custom PrintCellStyle for grid columns to bring
// a custom printing appearance for PopupImageEdit, CheckBoxEdit and MemoEdit.
//
// You can find sample updates and versions for different programming languages here:
// http://www.devexpress.com/example=E3227 using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Collections.Generic;
using System.Windows.Resources;
using System.IO;
using System.Drawing;
using System.Windows.Data;
using DevExpress.XtraPrinting;
using DevExpress.Export; namespace GridExample {
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent(); Loaded += new RoutedEventHandler(MainWindow_Loaded);
} void MainWindow_Loaded(object sender, RoutedEventArgs e) {
grid.ItemsSource = new List<TestData>() {
new TestData() { PlainText = "LMA AG", MemoText = "Mercedes-Benz SLK \n 2004 \n Silver", BooleanMember = true, Image = GetImage("/Images/1.png") },
new TestData() { PlainText = "Western Motors", MemoText ="Rolls-Royce Corniche \n 1975 \n Snowy whight", BooleanMember = false, Image = GetImage("/Images/2.png") },
new TestData() { PlainText = "Sun car rent", MemoText = "Ford Ranger FX-4\n 1999 \n Red rock", BooleanMember = true, Image = GetImage("/Images/3.png") }
};
} ImageSource GetImage(string path) {
return new BitmapImage(new Uri(path, UriKind.Relative));
} private void PrintButton_Click(object sender, RoutedEventArgs e) {
//view.ExportToCsv(@"C:\Users\lenovo\Desktop\testExport\aa.csv");
view.ExportToXlsx(@"C:\Users\lenovo\Desktop\testExport\aa.xlsx", new XlsxExportOptionsEx
{ ExportType = ExportType.WYSIWYG
});
XlsxExportOptionsEx options = new XlsxExportOptionsEx();
options.CustomizeCell += Options_CustomizeCell;
view.ExportToXlsx(@"C:\Users\lenovo\Desktop\testExport\aa11.xlsx", options);
view.ShowPrintPreview(this);
} private void Options_CustomizeCell(CustomizeCellEventArgs e)
{
if(e.AreaType == SheetAreaType.Header)
{
e.Formatting.Font = new DevExpress.Export.XlCellFont { Name= "微软雅黑", Bold = true, Size = 20 };
e.Formatting.BackColor = System.Drawing.Color.Pink;
e.Handled = true;
}
}
}
}
PrintStyle 设置

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"
xmlns:dxgt="clr-namespace:DevExpress.Xpf.Grid.Themes;assembly=DevExpress.Xpf.Grid.v20.1"
>
<Style x:Key="HeaderStyle"
TargetType="{x:Type dxe:TextEdit}"
BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}">
<Setter Property="dxp:ExportSettings.TargetType" Value="Text" />
<Setter Property="FontSize" Value="11pt" />
<Setter Property="FontFamily" Value="Calibri" />
<Setter Property="Background" Value="#177477" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontWeight" Value="Bold" />
</Style> <Style x:Key="ImageColumnPrintingStyle"
TargetType="{x:Type dxe:PopupImageEdit}"
BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}">
<Setter Property="dxp:ExportSettings.TargetType" Value="Panel" />
<Setter Property="DisplayTemplate">
<Setter.Value>
<ControlTemplate TargetType="dxe:PopupImageEdit"> <dxe:ImageEdit Source="{Binding Path=Value}"
IsPrintingMode="True"
Margin="4"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/> </ControlTemplate>
</Setter.Value>
</Setter>
</Style> <dx:BoolToObjectConverter x:Key="BoolToTextConverter" TrueValue="Avaliable" FalseValue="NotAvaliable" /> <Style x:Key="CheckEditColumnPrintingStyle"
TargetType="dxe:CheckEdit"
BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}">
<Style.Setters>
<Setter Property="dxp:ExportSettings.TargetType" Value="Panel" />
<Setter Property="DisplayTemplate">
<Setter.Value>
<ControlTemplate TargetType="dxe:CheckEdit">
<dxe:TextEdit Text="{Binding Path=Value, Converter={StaticResource BoolToTextConverter}}" HorizontalAlignment="Center" Margin="4"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style> <Style x:Key="MemoColumnPrintingStyle"
TargetType="dxe:MemoEdit"
BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}">
<Style.Setters>
<Setter Property="dxp:ExportSettings.TargetType" Value="Panel" />
<Setter Property="DisplayTemplate">
<Setter.Value>
<ControlTemplate TargetType="dxe:MemoEdit">
<dxe:TextEdit Text="{Binding Value}"
TextWrapping="Wrap"
IsPrintingMode="True"
Margin="4"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Left"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</ResourceDictionary>

public class TestData {
public string PlainText { get; set; }
public string MemoText { get; set; }
public bool BooleanMember { get; set; }
public ImageSource Image { get; set; }
}
Dev Express WPF GridControl 数据导出到Excel的更多相关文章
- WinForm------如何将GridControl数据导出到Excel
转载: http://www.cnblogs.com/xiaofengfeng/archive/2011/11/22/2258906.html 代码: SaveFileDialog saveFileD ...
- Dev GridControl数据导出格式问题
环境:DevExpress9.3,Vs2008 DevExpress的GridControl提供方便的数据导出到Excel功能,导出中用户可以根据GridControl的格式进行导出(ExportTo ...
- WPF-将DataGrid控件中的数据导出到Excel
原文:WPF-将DataGrid控件中的数据导出到Excel 导出至Excel是非常常见,我们可以用很多类库,例如Aspose.NOPI.Interop,在这里我们使用微软自家的工具.我的WPF绑定的 ...
- 学习笔记 DataGridView数据导出为Excel
DataGridView数据导出为Excel 怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...
- 将C1Chart数据导出到Excel
大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...
- vb.net-三种将datagridview数据导出为excel文件的函数
第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll office.dll #Region "导出excel函数 ...
- 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm
using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...
- 数据导出到Excel中
自己修改后的一个数据导出到Excel的方法,粘出来与大家共享. 只需要将 System.Web.HttpContext.Current.Response.Charset = ...
- asp.net将数据导出到excel
本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...
- 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>
前台datagrid数据绑定 #region 导出到excel中 /// <summary> /// 2014-6-6 /// </summary> / ...
随机推荐
- 攻防世界:Web习题之 get_post
攻防世界:Web习题之 get_post 题目内容 https://adworld.xctf.org.cn/challenges/list 题目首先需要我们用GET方式提交一个名为a,值为1的变量: ...
- codeforces1849 D. Array Painting
题目链接 https://codeforces.com/problemset/problem/1849/D 题意 输入 \(n(1 \leq n \leq 2e5)\) 和长为 \(n\) 的数组 \ ...
- 工欲善其事,必先利其器。如何玩转 VS Code?
Visual Studio Code 作为广受好评的开发工具,已经被越来越多的开发者当作首选的开发工具.然而,你真的了解 VS Code 了吗?你真的会使用 VS Code,把 VS Code 的强大 ...
- mysql将公司数据随机挂在部门身上
1.创建示例数据 CREATE TABLE department_table ( company_code VARCHAR(10) COMMENT '公司编码', company_name VARCH ...
- Spring 话题
我从来不用 spring,项目再大也不会考虑 spring 那套模式.什么依赖注入控制反转,叠床架屋,对开发和运维可以说有害无益.上文 zz Spring 是一种反模式 - Inshua - 博客园 ...
- forms组件与源码分析、modelform组件
目录 一.forms组件 forms组件介绍 Form定义 二.forms组件渲染标签 三.forms组件展示信息 四.forms组件校验补充 五.forms组件参数补充 六.forms组件源码剖析 ...
- IDE提交Git出现husky>pre-commit错误
若使用IDE提交Git出现以下错误: 则是ES6在提交校验过程中出现了问题,强制提交方式为: 命令行: git commit --no-verify IDEA: 在提交时取消勾选Run Git hoo ...
- Qt开源作品34-qwt无需插件源码
一.前言 QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图.为具有技术专业背景的程序提供GUI组件和一组 ...
- AOP-Redis缓存
我没有单独使用过Redis,细节我可能解释不到位.该文章是采用依赖注入实现AOP-Redis缓存功能的 . 之前有写实现Memory缓存的.异曲同工之妙. 使用Redis离不开安装get包:Stack ...
- [转]Makefile教程
从0开始教你编写Makefile文件 跟我一起写Makefile-陈皓2005.pdf:链接: https://pan.baidu.com/s/1kKPfosCiPQONyZ1oeCmuAA 提取码: ...