我希望能够在C#中读取DataTable并将其添加到PDF文件中。该示例显示了如何一次执行一行,但似乎您必须定义表中的每一行。我无法弄清楚如何动态地将完整的DataTable添加到网格中。我有循环设置,但因为每次它不起作用我必须添加一个新行。我在下面找到的尝试示例。
DataTable myDT = new DataTable();
myDT = dbAccessObject.GetDTValues();//just filling DataTable
// Create a PDF Document
Document document = new Document();
// Create a Page and add it to the document
Page page = new Page();
document.Pages.Add(page);
// add Table to PDF
// Create a table
Table table = new Table(20, 100, 600, 600);
table.Columns.Add(100);
table.Columns.Add(100);
Row headers = table.Rows.Add(20, Font.Helvetica, 12);
string colStr = "name";
string colStr1 = "desc";
headers.Cells.Add(colStr);
headers.Cells.Add(colStr1);
Row row = table.Rows.Add(20, Font.Helvetica, 12);
Row row2 = table.Rows.Add(20, Font.Helvetica, 12);
int i, j;
i = j = 0;
while (i < myDT.Rows.Count)
{
while(j<myDT.Columns.Count)
{
row.Cells.Add(myDT.Rows[i][j].ToString());//need a default row here or way to add directly to the table
j++;}
j = 0;
i++;}
// Add the table to the page
page.Elements.Add(table);
// Add a label to the page
page.Elements.Add(new Label("New PDF Document", 0, 0, 512, 40, Font.Helvetica, 30, TextAlign.Center));
// Save the PDF document
document.DrawToWeb("MyDocument.pdf", true);
答案 0 :(得分:1)
您必须专门构建并添加必要的元素到您在DynamicPDF中使用的当前Page实例。同样适用于表格。您创建了一个Table实例,并且对于要添加到表中的每一行,您必须创建一个Row实例并相应地填充它。否则,循环代码只是一遍又一遍地更新同一行。
例如:
while (i < myDT.Rows.Count)
{
while (j < myDT.Columns.Count)
{
Row newRow = table.Rows.Add(20, Font.Helvetica, 12);
newRow.Cells.Add(myDT.Rows[i][j].ToString());//need a default row here or way to add directly to the table
j++;
}
j = 0;
i++;
}