如何使用Winforms从Crystal Reports中的GridView打印数据
本文关键字:中的 GridView 打印 数据 Reports Crystal 何使用 Winforms | 更新日期: 2023-09-27 18:22:05
我有一个使用行和列(无数据集或数据源)的索引号填充的DataGridView
例如:
dataGridView1[0, 0].Value = "ABC";
dataGridView1[0, 1].Value = "XYZ";
现在我想把它打印在Crystal Report上。我如何向Crystal Report提供dataSource,或者简单地说,我如何实现它?
除了GridView中的数据外,我还需要从文本框中打印一些其他数据。
我尝试过这种应用程序。
首先,我将datagridview的数据源导出为XML其次,我使用这个XML作为crystal报告的源代码。
void TransferDataToReport()
{
DataTable dT = GetDataTableFromDGV(dataGridView1);
dSet.Tables.Add(dT);
try
{
dSet.AcceptChanges();
dSet.WriteXml(@"C:'Data.xml", XmlWriteMode.WriteSchema);
}
catch (FileLoadException) { }
ReportDocument cr = new ReportDocument();
string filePath = @"C:'CrystalReportData.rpt";
cr.Load(filePath);
cr.SetDataSource(dSet);
crystalReportViewer1.ReportSource = cr;
}
public DataTable GetDataTableFromDGV(DataGridView dgv)
{
DataTable dt = new DataTable();
foreach (DataGridViewColumn column in dgv.Columns)
{
dt.Columns.Add(column.Name, column.ValueType);
}
object[] cellValues = new object[dgv.Columns.Count];
foreach (DataGridViewRow row in dgv.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
cellValues[i] = row.Cells[i].Value;
}
dt.Rows.Add(cellValues);
}
return dt;
}