ItextSharp:使用循环向表中添加单元格

时间:2015-04-13 15:29:16

标签: vb.net itextsharp

由于我是ItextSharp的新手,我正在尝试更改有关如何将单元格添加到PdfPTable的现有功能..目前这些单元格是逐行添加的,我希望它们在循环的帮助下逐列添加

有两个列表,第一个列表填充第一列,第二个列表填充整个第二列。如果列表具有不相等的rowcount,我必须在这些列上添加空单元格。

我尝试在网上做一些研究,但找不到合适的解决方案。

有人可以提供一个实例来实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

我不会回答任何特定于iText的内容,因为这更像是一般的编程问题。基本思想是你需要找到两个列表的最大计数,从零循环到最大值,并检查每个列表以查看该值是否在范围内。如果它在范围内,请使用该值,如果不是,则创建空单元格。下面是一个非常简单的实现:

''//Two sample lists
Dim ListA As New List(Of String) From {"A", "B", "C"}
Dim ListB As New List(Of String) From {"Apple", "Bat"}

''//Find the maximum count of the two lists
Dim X = Math.Max(ListA.Count, ListB.Count)

''//Index notations are zero-based so loop from zero to one
''//less than the total
For I = 0 To (X - 1)


    If I >= ListA.Count Then
        ''//Our index is past the limit of the first column, add empty cell here
        Console.WriteLine("<A>")
    Else
        ''//Our index is within the limits of the first column
        Console.WriteLine(ListA(I))
    End If

    If I >= ListB.Count Then
        ''//Our index is past the limit of the second column, add empty cell here
        Console.WriteLine("<B>")
    Else
        ''//Our index is within the limits of the first column
        Console.WriteLine(ListB(I))
    End If

Next

修改 如果您只有两列,则可以将其推断为如下所示:

Dim ListA As New List(Of String) From {"A", "B", "C"}
Dim ListB As New List(Of String) From {"Apple", "Bat"}
Dim ListC As New List(Of String) From {"Alice", "Bob", "Charlie", "Daniel"}


Dim AllLists As New List(Of IEnumerable(Of Object))
AllLists.Add(ListA)
AllLists.Add(ListB)
AllLists.Add(ListC)
Dim Z = AllLists.Max(Function(l) l.Count)


For I = 0 To (Z - 1)
    For Each L In AllLists
        If I >= L.Count Then
            Console.WriteLine("<BLANK>")
        Else
            Console.WriteLine(L(I).ToString())
        End If
    Next
Next