使用itextsharp将具有表的单元格添加到外表

时间:2015-04-17 05:46:13

标签: c# itextsharp

我试图将具有表格的单元格添加到外部表格中。 我收到了以下错误。

  

"在colspan为1和rowspan的位置(6,0)添加一个单元格   1是非法的(超出边界/重叠)"

这似乎就像是itextsharp中的一个错误。

  1. 我在html表中找到了每个控件。如果此控件是表i调用 它' tblinner'。
  2. 我在里面找到了一个控件(在这种情况下所有控件都是标签) ' tblinner'并将其添加到itextsharp表中。 我怎么能克服这个?

                            for (int i = 0; i < tblInner.Rows.Count; i++)
                        {
                            iTextSharp.text.Table tblnested = new iTextSharp.text.Table(4);
                            iTextSharp.text.Table tblnestedbig = new iTextSharp.text.Table(1);
                            iTextSharp.text.Cell pdfTCell = new iTextSharp.text.Cell();
                            iTextSharp.text.Cell pdfTCellbig = new iTextSharp.text.Cell();
                            foreach (TableCell tCellInner in tblInner.Rows[i].Cells)
                            {
                                pdfTCell = new iTextSharp.text.Cell();
                                int cc = tblInner.Rows[i].Cells.Count;
                                Control tControlInnerLabel = tCellInner.Controls[0];
                                pdfTCell = AddControlBGToPDFTable(tControlInnerLabel, tblnested);//This function adds the control such as lable or image to tblnested
                                tblnestedbig.AddCell(pdfTCell);
                            }
                            pdfTCellbig.AddElement(tblnestedbig);
                            pdfTable.AddCell(pdfTCellbig);//i get error here
                        }
    
  3. 以下是&#39; AddControlBGToPDFTable&#39;确实

    private static iTextSharp.text.pdf.PdfPCell AddControlBGToPDFTable(Control tControl, iTextSharp.text.pdf.PdfPTable pdfTable)
    {
    (tControl is Label)
    {
     Label lbl = (Label)tControl.FindControl(tControl.ID);
     // add some style to control
     iTextSharp.text.pdf.PdfPCell pdfTable2Cell2 = null;
     pdfTable2Cell2.Colspan = 1;
     pdfTable2Cell2 = pdfOrigTCell;
     pdfTable2Cell2.AddElement(new   iTextSharp.text.Phrase(25f,lbl.Text.Replace("<br>", "\r\n").Replace("<br />", "\r\n"), new iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 12, style)));
    pdfTable.AddCell(pdfTable2Cell2);
    return pdfTCell;
    }
    }
    
    1. 需要传递一个控件。
    2. 创建一个单元格并将此控件放入单元格并将单元格添加到表格中 作为param传递给它。

1 个答案:

答案 0 :(得分:0)

你应该发布方法AddControlBGToPDFTable的代码,我们可以看到你设置为单元格的属性。

您可以使用PdfPCellPdfPTable

,而不是创建带标签的单元格
iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell();
cell.Phrase = new iTextSharp.text.Phrase("some text");