自定义DevExpress导出到Excel

时间:2015-03-31 09:40:39

标签: wpf c#-4.0 devexpress

我需要在导出的表之前添加额外的行:

| column1 | column2 |
| value   | value   |

我需要以这样的方式导出:

| date: 20.21.23 | date: 22.11.14 |
| column1        | column2        |
| value          | value          |

这些日期值存储在我的viewmodel中,对我来说最好的解决方案是将这些单元格添加到gridcontrol视图中,该视图仅在打印时可见。 我不确定那是否可能。

目前我正以这种方式打印:

var link = new PrintableControlLink(Grid.View as IPrintableControl);
link.PrintingSystem.ExportOptions.Xlsx.TextExportMode = TextExportMode.Text;
link.CreateDocument(false);
link.ExportToXls(ms);

1 个答案:

答案 0 :(得分:0)

您需要为gridcontrol定义数据模板:

<dxg:GridControl.Resources>
    <DataTemplate x:Key="HeaderTemplate">
        <StackPanel Orientation="Horizontal">
            <dxe:TextEdit Text="{Binding Path=Content.ViewModelProp1, Mode=OneWay}" />
            <dxe:TextEdit Text="{Binding Path=Content.ViewModelProp2, Mode=OneWay}" />
        </StackPanel>
    </DataTemplate>
</dxg:GridControl.Resources>

在你的处理程序中,你需要使用这样的代码:

var ms = new MemoryStream();
var link = new PrintableControlLink(Grid.View as IPrintableControl);
link.PrintingSystem.ExportOptions.Xlsx.TextExportMode = TextExportMode.Text;
link.PageHeaderData = DataContext; //viewmodel instance
link.PageHeaderTemplate = (DataTemplate)Grid.Resources["HeaderTemplate"];
link.CreateDocument(false);
link.ExportToXls(ms);

我想强调一下,要从模板访问 DataContext ,您需要使用 Content 属性(例如 Content.ViewModelProp2 )。换句话说,它将尝试访问RowContent模型属性。