Member 13001748 Ответов: 1

Экспорт выбранных данных строк в pdf в C# с помощью iTextsharp


У меня есть datagridview, и мне нужно экспортировать только выбранные строки в pdf с помощью itextsharp в C#. Я в состоянии экспортировать заголовки практическое руководство в формате PDF.

проблема 1 - мне нужно получить целые заголовки в один столбец в формате pdf
проблема 2-мне нужно, чтобы выбранные данные строки отображались перед релевантными колоннами.

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

iTextSharp.text.Font text = new iTextSharp.text.Font(bf, 11, iTextSharp.text.Font.NORMAL);

        Document doc = new Document(PageSize.A2.Rotate(), 1, 1, 1, 1);
        PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("Test.pdf", FileMode.Create));
        doc.Open();

        
        PdfPTable pdftable = new PdfPTable(dataGridView1.ColumnCount - 0);

        for (int j = 0; j < dataGridView1.Columns.Count - 0; j++)
        {
            PdfPCell cell = new PdfPCell(new Phrase(dataGridView1.Columns[j].HeaderText, text));
            cell.BackgroundColor = BaseColor.LIGHT_GRAY;
            pdftable.AddCell(cell);
        }

        pdftable.HeaderRows = 0;
        for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
        //for (int i = 0; i < dgvLoadAll.Rows.Count; i++)
        {
            for (int k = 0; k < dataGridView1.Columns.Count - 0; k++)
            {

                if (dataGridView1[k, i].Value != null)
                {
                    pdftable.AddCell(new Phrase(dataGridView1.SelectedRows[i].Cells[k].Value.ToString(), text));
                    //pdftable.AddCell(new Phrase(dgvLoadAll[k, i].Value.ToString(), text));

                }
            }
        }

        //float[] widths = new float[] { 15f, 50f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f };

        // pdftable.SetWidths(widths);
        doc.Add(pdftable);
        doc.Close(); 
        System.Diagnostics.Process.Start("Test.pdf");
    }

1 Ответов

Рейтинг:
12

pkfox

Одна вещь, которую я замечаю в вашем коде, которая выглядит подозрительно, - это когда вы говорите

if(dataGridView1[k, i].Value != null)

// I think it should be

if(dataGridView1[i,k].Value != null)