为什么没有添加这些表格单元格?

时间:2011-05-19 18:47:32

标签: c# .net itext cell

我正在尝试使用iTextSharp创建一个pdf报告,我很难过为什么它没有正确地进入下一行添加单元格。

以下是代码:

    public class Centralizador
    {
        public void PrintCentralizador(int gradeParaleloId, string gradeName, string paraleloName, string courseName)
        {
            var studentRepo = new StudentRepository();
            var students = studentRepo.FindAllStudentsFromGradeParalelo(gradeParaleloId).OrderBy(s => s.LastNameFather);
            int rowHeight = 13;
            string filePath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\Centralizador.pdf";

            try
            {
                Document document = new Document(PageSize.LETTER);
                //Landscape the document.
                document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());
                BaseFont baseFont = BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1250, BaseFont.EMBEDDED);
                Font font = new Font(baseFont, 8);

                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filePath, FileMode.Create));
                document.Open();

                GradeParaleloRepository paraRep = new GradeParaleloRepository();
                var gra = paraRep.FindGradeParalelo(gradeParaleloId);
                Paragraph p = new Paragraph(new Phrase("Centralizador - Gestion " + DateTime.Now.Year + " \n " + courseName + " " + gra.Grade.Name + " " + gra.Name + "\n Colegio Madre Vicenta Uboldi \n " + DateTime.Now, font));
                document.Add(p);

                PdfPTable table = new PdfPTable(36); //36 Column table.
                table.TotalWidth = 800f;
                table.LockedWidth = true;
                float[] widths = new float[] { 0.13f, 1.4f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f, 0.13f };
                table.SetWidths(widths);

                PdfPCell blankCell = new PdfPCell(new Phrase("", font));
                blankCell.FixedHeight = 25;

                PdfPCell blankCellB = new PdfPCell(new Phrase("", font));
                blankCellB.FixedHeight = 25;

                table.AddCell(blankCell);
                table.AddCell(blankCellB);

                PdfPCell mat = new PdfPCell(new Phrase("MAT", font));
                mat.Colspan = 3;
                mat.HorizontalAlignment = 1;
                table.AddCell(mat);

                PdfPCell len = new PdfPCell(new Phrase("LEN", font));
                len.HorizontalAlignment = 1;
                len.Colspan = 3;
                table.AddCell(len);

                PdfPCell psi = new PdfPCell(new Phrase("PSI", font));
                psi.Colspan = 3;
                psi.HorizontalAlignment = 1;
                table.AddCell(psi);

                PdfPCell cna = new PdfPCell(new Phrase("CNA", font));
                cna.Colspan = 3;
                cna.HorizontalAlignment = 1;
                table.AddCell(cna);

                PdfPCell soc = new PdfPCell(new Phrase("SOC", font));
                soc.Colspan = 3;
                soc.HorizontalAlignment = 1;
                table.AddCell(soc);

                PdfPCell ing = new PdfPCell(new Phrase("ING", font));
                ing.Colspan = 3;
                ing.HorizontalAlignment = 1;
                table.AddCell(ing);

                PdfPCell efi = new PdfPCell(new Phrase("EFI", font));
                efi.Colspan = 3;
                efi.HorizontalAlignment = 1;
                table.AddCell(efi);

                PdfPCell mus = new PdfPCell(new Phrase("MUS", font));
                mus.Colspan = 3;
                mus.HorizontalAlignment = 1;
                table.AddCell(mus);

                PdfPCell apl = new PdfPCell(new Phrase("APL", font));
                apl.Colspan = 3;
                apl.HorizontalAlignment = 1;
                table.AddCell(apl);

                PdfPCell rel = new PdfPCell(new Phrase("REL", font));
                rel.Colspan = 3;
                rel.HorizontalAlignment = 1;
                table.AddCell(rel);

                PdfPCell com = new PdfPCell(new Phrase("COM", font));
                com.Colspan = 3;
                com.HorizontalAlignment = 1;
                table.AddCell(com);

                PdfPCell blankCellC = new PdfPCell(new Phrase("", font));
                blankCellC.FixedHeight = 25;
                table.AddCell(blankCellC);

                //This is supposed tobe on a new row. But isn't. It seems
                //everything below this comment doesn't even get added.
                PdfPCell numero = new PdfPCell(new Phrase("No.", font));
                numero.FixedHeight = rowHeight;
                numero.HorizontalAlignment = 0;
                table.AddCell(numero);                

                PdfPCell nombres = new PdfPCell(new Phrase("Apellidos y Nombres", font));
                nombres.FixedHeight = rowHeight;
                nombres.HorizontalAlignment = 0;
                table.AddCell(nombres);

                for (int i = 0; i < 2; i++)
                {
                    PdfPCell pa = new PdfPCell(new Phrase("PA.", font));
                    table.AddCell(pa);

                    PdfPCell re = new PdfPCell(new Phrase("RE.", font));
                    table.AddCell(re);

                    PdfPCell nf = new PdfPCell(new Phrase("NF.", font));
                    table.AddCell(nf);
                }

                PdfPCell obs = new PdfPCell(new Phrase("OBS.", font));

                table.SpacingBefore = 20f;
                table.SpacingAfter = 20f;

                document.Add(table);
                document.Close();
            }
            catch (DocumentException de)
            {
                Debug.WriteLine(de.Message);
            }
            catch (IOException ioe)
            {
                Debug.WriteLine(ioe.Message);
            }
        }
    }

这是一张如何结束的图片:所以它正确地添加了最后一列com,还添加了空白填充单元格,然后它不添加接下来的内容。它只是不显示。有什么建议吗?

enter image description here

2 个答案:

答案 0 :(得分:3)

您需要为每行添加确切的列数才能显示它。

请参阅我的回答,了解您的其他问题PdfTable isn't added to my document

答案 1 :(得分:0)

试试这个

foreach (DataGridViewRow row in dgvCalls.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Visible )
        {
            if (cell.Value != null)
                pdfTable.AddCell(cell.Value.ToString());
            else
                pdfTable.AddCell("");
        }
        //  continue;
    }
}