Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向动态PDF添加数据表_C#_Dynamicpdf - Fatal编程技术网

C# 向动态PDF添加数据表

C# 向动态PDF添加数据表,c#,dynamicpdf,C#,Dynamicpdf,我希望能够在C#中读取数据表,并将其添加到PDF文件中。该示例显示了如何一次执行一行,但似乎必须定义表中的每一行。我还没有弄清楚如何将完整的数据表动态添加到网格中。我有循环设置,但由于每次都要添加新行,因此无法运行。下面是我尝试的例子 DataTable myDT = new DataTable(); myDT = dbAccessObject.GetDTValues();//just filling DataTable // Create a

我希望能够在C#中读取数据表,并将其添加到PDF文件中。该示例显示了如何一次执行一行,但似乎必须定义表中的每一行。我还没有弄清楚如何将完整的数据表动态添加到网格中。我有循环设置,但由于每次都要添加新行,因此无法运行。下面是我尝试的例子

        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);
DataTable myDT=newdatatable();
myDT=dbAccessObject.GetDTValues()//只是填充数据表
//创建PDF文档
文档=新文档();
//创建页面并将其添加到文档中
页面=新页面();
文件。页码。添加(第页);
//将表格添加到PDF
//创建一个表
Table Table=新的Table(20,100,600,600);
表.列.增加(100);
表.列.增加(100);
行标题=table.Rows.Add(20,Font.Helvetica,12);
字符串colStr=“name”;
字符串colStr1=“desc”;
headers.Cells.Add(colStr);
headers.Cells.Add(colStr1);
Row Row=table.Rows.Add(20,Font.Helvetica,12);
row2行=table.Rows.Add(20,Font.Helvetica,12);
int i,j;
i=j=0;
而(i虽然(j您必须专门构建必要的元素,并将其添加到您在DynamicPDF中使用的当前页面实例中。这同样适用于表。您创建了一个表实例,并且对于要添加到表中的每一行,您必须创建一个行实例并相应地填充它。否则,您的循环代码只是在更新一次又一次地吵架

例如:

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++;
}
while(i
您必须为要添加到表中的每一行创建一个行实例。上面的示例是将标签元素直接添加到页面中,但概念相同。我将更新我的答案。