Я не собираюсь отвечать ни на что 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
EDIT Если у вас есть больше, чем просто две колонки, которые вы можете экстраполировать это на что-то вроде ниже:
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
Спасибо Крис за ответ .. Это кажется очень достойным решением для неравных массивов .. но о вопросе ITextSharp .. нет какого-либо способа, который мы можем сделать, сначала заполнив первый столбец, а затем второй, используя цикл? – user3725094
№ Как и в HTML, ячейки добавляются слева направо, сверху вниз. На самом деле в таблицах нет «строк» или «столбцов», у них просто есть «ячейки». Столбец столбца - это, по сути, просто число, необходимое для того, чтобы рендеринг зациклился от одного до этого числа, и когда он достигнут, сбросьте позицию 'x'. –