Добавить ячейки в таблицу вертикально с foreach - PullRequest
0 голосов
/ 08 ноября 2018

Когда я добавляю ячейку в таблицу, она добавляется в следующий столбец.

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

Это мой код:

Document document = new Document(PageSize.A3, 50, 50, 25, 25);
MemoryStream PDFData = new MemoryStream();
PdfWriter PDFWriter = PdfWriter.GetInstance(document, PDFData);
document.Open();

PdfPTable table = new PdfPTable(testTimes);
table.DefaultCell.Border = 1;
table.HorizontalAlignment = 0;

table.WidthPercentage = 100f;

foreach (Test test in tests)
{
    switch (test.type)
    {
        case 3:
            //new Column (fail)
            PdfPCell type = new PdfPCell(new Phrase(TestType.Aimatologikes.ToString()));
            table.AddCell(type);

            PdfPCell data = new PdfPCell(new Phrase("values"));
            foreach (TestData testdata in test.TestDatas)
            {
                //Rows
                table.AddCell(data);
            }

            break;
    }
}

document.Add(table);
document.Close();

Это результат:

enter image description here

И я хочу разделить столбцы ниже второго foreach. Это возможно?

1 Ответ

0 голосов
/ 08 ноября 2018

Два предложения:

  • Сначала обновите свой код, чтобы использовать iText 7 (если это возможно). Если вы начинаете новый проект, имеет смысл использовать последнюю версию API
  • Во-вторых, (как предлагает @mkl) напишите промежуточную структуру данных, которая будет действовать как логическое представление вашего объекта Table

Позвольте мне объяснить.
Давайте назовем этот промежуточный объект EasyTable.

EasyTable нужно сделать несколько вещей:

  • Позволяет вам установить конкретный объект PDF в заданных координатах
  • Изменить объект PDF в заданных координатах
  • Рассчитать количество строк
  • Рассчитать количество столбцов
  • Предоставить удобный метод для получения всех ячеек (включая возможные пробелы) подряд по ряду

Для этого вы можете легко внедрить EasyTable для использования Карты. Таким образом, вы можете отобразить объекты Point в PdfObject. Вы можете рассчитать количество строк, перебирая все ключи и находя максимальное значение Y. Аналогично по количеству столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...