Даже после того, как какой-то вперед и назад в комментариях к первоначальному вопросу, я не совсем уверен, что понял вопрос правильно, но давайте попробуем:
Итак, давайте предположим, что вы не знаете, количество столбцов но нужно забрать ячейки первой строки, чтобы узнать количество столбцов и их ширину. В этом случае вы можете просто сделать что-то вроде этого:
public void CreatePdfWithDynamicTable()
{
using (FileStream output = new FileStream(@"test-results\content\dynamicTable.pdf", FileMode.Create, FileAccess.Write))
using (Document document = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(document, output);
document.Open();
PdfPTable table = null;
List<PdfPCell> cells = new List<PdfPCell>();
List<float> widths = new List<float>();
for (int row = 1; row < 10; row++)
{
// retrieve the cells of the next row and put them into the list "cells"
...
// if this is the first row, determine the widths of these cells and put them into the list "widths"
...
// Now create the table (if it is not yet created)
if (table == null)
{
table = new PdfPTable(widths.Count);
table.SetWidths(widths.ToArray());
}
// Fill the table row
foreach (PdfPCell cell in cells)
table.AddCell(cell);
cells.Clear();
}
document.Add(table);
}
}
По * динамическому количеству ячеек * Вы имеете в виду, что некоторые ячейки строки могут быть объединены как * colspan *? Или вы имеете в виду, что отдельные ряды вашей таблицы структурно не имеют ничего общего? – mkl
Я имею в виду, что число столбцов не фиксировано заранее. Ячейка будет генерироваться динамически на основе данных из базы данных. Если у меня есть 5 записей из db, тогда 5 столбцов и 15 записей, а затем 15 столбцов (PdfpCells). Итак, как я могу назначить ширину каждой из ячеек динамически. Для каждой строки ячейка будет такой же. Но общее количество ячеек не фиксируется заранее. Надеюсь, теперь ты понимаешь. Спасибо – Herin
Но как только вы создали ячейки для первой строки, вы знаете, не так ли? Таким образом, вы можете также добавить эти ячейки в 'List' вместо' PdfPTable'. Как только ячейки для первой строки будут завершены, вы знаете количество столбцов вашей таблицы, можете создать «PdfPTable» с таким количеством столбцов и добавить ячейки из списка в таблицу. Следующие строки могут быть добавлены как обычно. – mkl