我需要在导出的表之前添加额外的行:
| 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模型属性。