Member 14636607 Ответов: 1

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


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

Ниже приведен код для экспорта данных из 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);
}


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

Я попробовал установить счетчики, но они работают не так, как ожидалось.

Garth J Lancaster

Сколько строк имеется на листе ?

Разбить одну строку на группы из 10 столбцов "легко", но вы не говорите, сколько у вас строк, это может вызвать проблемы с подкачкой страниц, как в таблице PDF, бегущей по странице.

Member 14636607

Только одна строка

1 Ответов

Рейтинг:
0

Garth J Lancaster

ладно, если рядок.Тогда ячейки ПЕРЕЧИСЛИМЫ в смысле LINQ

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();

Произведет "список списков", где
List 0 = List cells for Columns  1..10
List 1 = List cells for Columns 11..20
...


Maciej Los

5ed!

Garth J Lancaster

Спасибо Мацей - я с нетерпением ждал, может быть, пропуска и принятия решения подкачки для его строк, но, похоже, у него есть только одна строка данных :-(

Maciej Los

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