Добавить столбец в PdfPTable, iTextSharp

Я создаю PDF-документ с помощью iTextSharp. Я вижу, как создать новую таблицу с несколькими столбцами, но я все равно не вижу возможности динамического добавления нового столбца. У меня проблема в том, что я не узнаю количество столбцов, которые мне нужны сразу, поэтому мне нужно продолжать добавлять их.

Может кто-нибудь просветить меня, или мне придется заново создавать таблицу каждый раз, когда мне нужно добавить столбец?

Спасибо, Мэт.


person mat-mcloughlin    schedule 26.02.2010    source источник


Ответы (3)


Разве не имеет смысла создать промежуточную модель, содержащую нужную вам таблицу и способную затем создать для вас таблицу PDF?

Я знаю, что это звучит как много работы, но в конечном итоге это должно помочь, поскольку вы сможете динамически изменять строки и столбцы по мере их построения, а затем, в конце, просто «скомпилировать» таблицу и плюнуть из объекта PdfPTable?

person Geoff    schedule 04.01.2011

Таблицы PdfPTable неизменяемы, поскольку после создания количество столбцов увеличивается.

Единственный обходной путь, который я могу придумать, - это начать с целой группы столбцов и... нет, это тоже не сработает. Вы даже не можете добавлять ячейки в существующую строку. Я подумал, что вы могли бы поиграть с охватом столбца, чтобы замаскировать дополнительные столбцы и настроить их по мере добавления новых ячеек в строки, но это тоже не сработает.

Вы должны перестроить таблицу при добавлении столбцов. Нет пути вокруг этого.

Я настоятельно рекомендую вам выяснить, как определить количество столбцов, прежде чем создавать таблицу ... даже если вам нужно «пробный прогон» ваших данных. Используйте некоторый промежуточный формат (String[][] или любой другой), чтобы сохранить ваши данные, а затем создайте таблицу из него, а не из данных, которые вы получаете. Или, по крайней мере, отследите, сколько столбцов вам понадобится.

Учитывая огромное количество данных, один проход может быть нецелесообразным/невозможным. Но перестроение всей таблицы несколько раз не может быть намного лучше. Это действительно вопрос настройки производительности, на который только у вас есть информация, чтобы ответить.

person Mark Storer    schedule 28.12.2010

Таблицы ITextSharp работают иначе, чем HTML-таблицы (к чему, я думаю, вы привыкли).

Все, что вам нужно, это указать количество столбцов, которые у вас есть, а затем продолжать добавлять ячейки.

Скажем, вы создаете pdfptable с 5 столбцами. 5-я ячейка, которую вы добавите, будет в первой строке, а 6-я ячейка будет в 1-м столбце во 2-й строке.

Единственным недостатком этого является то, что вам нужно добавить строки, в которых не все ячейки заполнены, но я обычно обхожу это, просто добавляя пустую ячейку или ячейку с пробелом в ней.

person CResults    schedule 01.03.2010
comment
Я думаю, вы неправильно поняли мой вопрос, я хочу добавить новый столбец, т.е. у меня есть таблица с 3 столбцами, и я хочу добавить 4-й столбец, а не переходить к новой строке. - person mat-mcloughlin; 01.03.2010
comment
Э-э, да, извините, я пытаюсь решить проблемы слишком рано! FWIW Я провел довольно много времени с IText и не знаю, как вы можете это сделать. - person CResults; 01.03.2010