Dev Express WPF 给控件提供了公共的导出方法:

以导出数据到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; }
}

Demo

Dev Express WPF GridControl 数据导出到Excel的更多相关文章

  1. WinForm------如何将GridControl数据导出到Excel

    转载: http://www.cnblogs.com/xiaofengfeng/archive/2011/11/22/2258906.html 代码: SaveFileDialog saveFileD ...

  2. Dev GridControl数据导出格式问题

    环境:DevExpress9.3,Vs2008 DevExpress的GridControl提供方便的数据导出到Excel功能,导出中用户可以根据GridControl的格式进行导出(ExportTo ...

  3. WPF-将DataGrid控件中的数据导出到Excel

    原文:WPF-将DataGrid控件中的数据导出到Excel 导出至Excel是非常常见,我们可以用很多类库,例如Aspose.NOPI.Interop,在这里我们使用微软自家的工具.我的WPF绑定的 ...

  4. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

  5. 将C1Chart数据导出到Excel

    大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...

  6. vb.net-三种将datagridview数据导出为excel文件的函数

    第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll  office.dll #Region "导出excel函数 ...

  7. 数据导出至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; ...

  8. 数据导出到Excel中

    自己修改后的一个数据导出到Excel的方法,粘出来与大家共享. 只需要将             System.Web.HttpContext.Current.Response.Charset =   ...

  9. asp.net将数据导出到excel

    本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...

  10. 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>

    前台datagrid数据绑定 #region 导出到excel中    /// <summary>    /// 2014-6-6    /// </summary>    / ...

随机推荐

  1. javascript 实现参数重载

    1.概要 在java中,同一个函数签名,比如 getUser,我们可以根据参数的不同,调用不同功能的方法.这也就是参数重载,如何在javascript也实现参数重载呢? 2.实现方法 function ...

  2. OS之《死锁》

    什么是死锁 一组进程中的每一个进程都在等待仅由该组进程中其他进程才能引发的事件,这样就形成死锁了. 死锁的原因 竞争不可抢占的资源 竞争可消耗资源 进程推进顺序不当 死锁产生的必要条件 1.互斥条件: ...

  3. 【Amadeus原创】Docker安装wikijs wiki系统

    拉取mysql8的镜像并运行 docker pull mysql docker run -d -v /data/mysql/data:/var/lib/mysql -v /data/mysql/con ...

  4. 智能存储 | 超质感 HDR 生产,激活你的视神经

    视频平台尊贵的会员可以享受 4K HDR 超清视界,各类新型旗舰机都具备拍摄 HDR 视频的能力,3C 产品发布会必提 HDR 超清显示.想必各位看官感受到视觉逐渐被 HDR 浪潮侵袭了,那 HDR ...

  5. 若依管理系统 -- 更换头像上传文件报错(/tmp/tomcat.8013579853364800617.8080/work/Tomcat/localhost/ROOT)

    一.错误情况 1.错误截图 二.错误解决情况 1.若依官方解答的链接 2.若依解答原文 1)原因: 在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会 ...

  6. 一场因OpenJDK引发的血案 之JavaFx

    https://zhuanlan.zhihu.com/p/103765203 案发现场 最近做了个项目,本地调试通过了,可在服务器上部署时却编译失败,报错如下 编译失败的原因是缺少javafx.uti ...

  7. checker jenkins 启动配置

    chmod -R 755 bin scp target/*.jar ubuntu@x:/home/ubuntu/checker/ scp config/*.yml ubuntu@x:/home/ubu ...

  8. git学习之git reset命令

    Git版本恢复命令 reset命令有3种方式: git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和inde ...

  9. Linux 中的内存使用率计算方式

    背景介绍 在工作中处理问题的时候,遇到一个问题,自己根据 top 命令时查看到的 used 和 total 计算出来的内存使用率已经达到 90% 以上了,但是系统自带的监控软件计算出来的使用率往往没有 ...

  10. Qt音视频开发32-qmedia内核回调拿图片数据

    一.前言 使用qmediaplayer来打开视频并播放,默认首选会采用QVideoWidget控件来展示,优点是不用自己来绘制,一切交给了QVideoWidget控件,这样可以做到极低的CPU占用,缺 ...