WPF:将Datagrid/DataTable转换为用于打印的表
我正试图“打印”我的datagrid/datatable的内容。 我读了一些关于将DATAGRID转换为TABLE再转换为FLOWDOCUMENT的文章,但我找不到如何进行转换的源代码 我只需要一些关于如何将datagrid/dataTable转换为Table的示例代码 然后我将应用此解决方案: 有什么想法吗WPF:将Datagrid/DataTable转换为用于打印的表,wpf,printing,wpfdatagrid,Wpf,Printing,Wpfdatagrid,我正试图“打印”我的datagrid/datatable的内容。 我读了一些关于将DATAGRID转换为TABLE再转换为FLOWDOCUMENT的文章,但我找不到如何进行转换的源代码 我只需要一些关于如何将datagrid/dataTable转换为Table的示例代码 然后我将应用此解决方案: 有什么想法吗 感谢并为我的noob问题感到抱歉。就我的研究而言,当我打印一些东西时,我发现将UI元素转换为页面是一种错误的尝试。打印与创建UI有很大不同,并且纸上没有滚动条或可拖动的列:),因此打印数据
感谢并为我的noob问题感到抱歉。就我的研究而言,当我打印一些东西时,我发现将UI元素转换为页面是一种错误的尝试。打印与创建UI有很大不同,并且纸上没有滚动条或可拖动的列:),因此打印数据与表单上显示的表单数据不同 就
DataTable
而言,这只是数据的一种表示形式,因此您可以轻松生成一个可以打印的表。它已经有行和列,因此应该直接开始:(注意代码未测试)
如果你问我,我发现这个API有点冗长,但是对于理解正确的复杂文档来说,它非常强大
System.Data.DataTable dataTable = GetDataTable();
var table = new Table();
var rowGroup = new TableRowGroup();
table.RowGroups.Add(rowGroup);
var header = new TableRow();
rowGroup.Rows.Add(header);
foreach (DataColumn column in dataTable.Columns)
{
var tableColumn = new TableColumn();
//configure width and such
table.Columns.Add(tableColumn);
var cell = new TableCell(new Paragraph(new Run("column Header")));
header.Cells.Add(cell);
}
foreach (DataRow row in dataTable.Rows)
{
var tableRow = new TableRow();
rowGroup.Rows.Add(tableRow);
foreach (DataColumn column in dataTable.Columns)
{
var value = row[column].ToString();//mayby some formatting is in order
var cell = new TableCell(new Paragraph(new Run(value)));
tableRow.Cells.Add(cell);
}
}
//and print your table