自定义DevExpress导出到Excel



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

| column1 | column2 |
| value   | value   |

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

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

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

目前我正在以这样的方式打印:

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

您需要为网格控件定义数据模板:

<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模型属性。

最新更新