Hameed Khan Ответов: 1

Datgridview экспорт в PDF в приложении на языке C# в Windows?


Строка и столбец не находятся в правильном положении при создании pdf-файла .В ID столбца удалить',' прийти и в столбце ID " 'имени' Come" и так далее.Вот мой PDF файл http://s8.postimg.org/nit4hghbp/Untitled.jpg[^]
Вот мой элемент изображения
http://s4.postimg.org/72aj4aar1/Untitled.jpg[^]

Я хочу, чтобы первые два столбца данных обновляли и удаляли печать данных в pdf-файле, а остальные данные столбцов печатались.
Вот мой код,Пожалуйста, помогите мне устранить эту ошибку.
private void button6_Click(object sender, EventArgs e)
        {
            //Creating iTextSharp Table from the DataTable data
            PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
            
            pdfTable.DefaultCell.Padding = 3;
            
            pdfTable.WidthPercentage = 70;
            pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
            pdfTable.DefaultCell.BorderWidth = 1;
            //Adding Header row
    foreach (DataGridViewColumn column in dataGridView1.Columns)
    {
        PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));
        cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
        pdfTable.AddCell(cell);
    }
 
    //Adding DataRow
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        foreach (DataGridViewCell cell in row.Cells)
        {
            if (cell.Value == null)
            {
                
            }
            else
            {
                pdfTable.AddCell(cell.Value.ToString());
                
            }


        }
    }
    //Exporting to PDF
    string folderPath = "C:\\PDFs\\";
    if (!Directory.Exists(folderPath))
    {
        Directory.CreateDirectory(folderPath);
    }
    using (FileStream stream = new FileStream(folderPath + "DataGridViewExport.pdf", FileMode.Create))
    {




        Document pdfDoc = new Document(PageSize.A2,10f,10f,10f,0f);
        
        PdfWriter.GetInstance(pdfDoc, stream);
        pdfDoc.Open();
        pdfDoc.Add(pdfTable);
        pdfDoc.Close();
        stream.Close();
    }

        }
        } 
    }

1 Ответов

Рейтинг:
0

Matt Comb

Проблема в том, что у вас есть записи, где растровое изображение не назначено, поэтому в этой части кода:

if (cell.Value == null)
{
     // if bitmap is null then the cell does not get output, this causes the cells to slide
}
else
{
    pdfTable.AddCell(cell.Value.ToString());

}


Не уверен в правильном коде, но вы должны сделать что-то вроде

if (cell.Value == null) && (cell.ValueType == string)


Hameed Khan

@Beefcake500 Спасибо за ответ,но ваш предоставленный код не работает :( :( ошибка приходит в ячейку.ValueType==string ,ошибка приходит "недопустимая строка термина выражения"

Matt Comb

Это был не рабочий код, извините, так как у меня нет вашего кода, это было просто, чтобы помочь вам в правильном направлении. Проблема заключается в том, что когда bitmap равен null (для столбцов с изображениями), он пропускает вывод этого столбца, в этом случае ему нужно вывести ячейку.

вот только сделай это:

если (ячейка.Значение == null)
{
pdfTable.AddCell("");

}
еще
{
pdfTable.AddCell(ячейка.Ценность.Метод toString());

}

Hameed Khan

@Красавец-мужчина Thanksssssssssssssssssss это работает сейчас,вот выход

http://s12.postimg.org/agcf443al/Untitled.jpg,

но вот одна проблема,я хочу,чтобы первые две колонки обновления и удаления не печатались в pdf-файле, тогда как я могу это сделать???