Member 14636607 Ответов: 1

Разбейте одну таблицу на несколько таблиц


Я экспортирую таблицу из рабочей книги excel в pdf с помощью itextsharp. У меня есть таблица в книге excel с почти 50 плюс столбцами. Я хочу разбить его на несколько таблиц, каждая из которых имеет только 10 столбцов. Таблица столбцов 50plus имеет одну строку заголовка и одну строку со значением...всего две строки.

Ниже приведен код для экспорта данных из excel в pdf...
using (XLWorkbook workBook = new XLWorkbook(filePath.FullName))
{
    IXLWorksheet workSheet = workBook.Worksheet(1);
    bool firstRow = true;

        PdfPTable table = new PdfPTable(1);

        foreach (IXLRow row in workSheet.Rows())
        {
            if (firstRow)
            {
                table.ResetColumnCount(row.Cells().Count());
                table.WidthPercentage = 100;
                table.HeaderRows = 1;

                foreach (IXLCell cell in row.Cells())
                {
                    PdfPCell pdfcell = new PdfPCell(new Phrase(cell.Value.ToString()));

                    pdfcell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
                    pdfcell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE;
                    pdfcell.BackgroundColor = new iTextSharp.text.BaseColor(System.Drawing.Color.Orange);

                    table.AddCell(pdfcell);
                }
                firstRow = false;
            }
            else
            {
                foreach (IXLCell cell in row.Cells())
                {
                    PdfPCell pdfcell = new PdfPCell(new Phrase(cell.Value.ToString().Trim(), tableFont));

                    //Align the cell in the center
                    pdfcell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
                    pdfcell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE;

                    table.AddCell(pdfcell);
                }
            }
        }
        pdfDoc.Add(table);
}


Что я уже пробовал:

int chunkSize = 10; // Grouping Columns/cells into 'chunks'
var chunks = row.Cells().Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / chunkSize)
.Select(x => x.Select(v => v.Value).ToList())
.ToList();


но выше код будет иметь только строки заголовка.

Richard MacCutchan

В чем же проблема?

Laxmidhar tatwa technologies

PdfPTable table = new PdfPTable(10); // 10-номер столбца

1 Ответов

Рейтинг:
8

Garth J Lancaster

Цитата:
но выше код будет иметь только строки заголовка
Почему? вам нужно заново выполнить циклы обработки данных, вот и все.

В первом цикле (строке заголовка), то есть "firstRow", вы сохраняете результат этого разделения/фрагмента для заголовков.

Затем вы получаете строку данных, вы сказали, что там была только одна, да ? таким образом, вы применяете эту функцию к строке данных.

Затем вы проходите цикл через строку данных "split", для каждой итерации получаете разделение по индексу для строки заголовка, строите заголовок таблицы, а затем обрабатываете данные для этого "split" /chunk, чтобы добавить соответствующие разделения/chunks для этого набора столбцов

Не будь таким помощником вампир


Member 14636607

Ожидая чего - то лучшего, чем это.

BillWoodruff

+5

Maciej Los

5ed!