我有一张有垂直和水平线的 table 。但是我不需要水平线,我只需要垂直线,如何设置它。我的预期输出是

我的表格代码

PdfPTable table = new PdfPTable(5);
table.TotalWidth = 510f;//table size
table.LockedWidth = true;
table.HorizontalAlignment = 0;
table.SpacingBefore = 10f;//both are used to mention the space from heading


table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("    SL.NO", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   SUBJECTS", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   MARKS", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   MAX MARK", font1)));

table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.AddCell(new Phrase(new Phrase("   CLASS AVG", font1)));

Doc.Add(table);

前任:

c# - 如何使用itextsharp在pdf中仅设置表格的垂直线?-LMLPHP

有人请帮忙

最佳答案

您可以更改单元格的边框,以便它们仅显示垂直线。如何执行此操作,取决于您如何将单元格添加到表中。

这是两种方法:

1.明确创建PdfPCell对象:

PdfPCell单元格=新的PdfPCell();
cell.AddElement(new Paragraph(“my content”));;
cell.Border = PdfPCell.LEFT;
table.AddCell(cell);

在这种情况下,将仅显示单元格的左边框。对于行中的最后一个单元格,您还应该添加右边框:

cell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;

2.隐式创建PdfPCell对象:

在这种情况下,您不必自己创建PdfPCell对象,而应让iTextSharp创建单元格。这些单元格将复制在DefaultCell级别定义的PdfPTable的属性,因此您需要更改此设置:

table.DefaultCell.Border = Rectangle.LEFT | Rectangle.RIGHT;
table.addCell("cell 1");
table.addCell("cell 2");
table.addCell("cell 3");

现在,所有单元格都没有顶部或底部边框,只有左侧和右侧边框。您将绘制一些额外的线条,但是当线条重合时,没有人会注意到。

另请参阅Hiding table border in iTextSharp

例如:
PdfPTable table = new PdfPTable(5);
table.TotalWidth = 510f;//table size
table.LockedWidth = true;
table.SpacingBefore = 10f;//both are used to mention the space from heading
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.DefaultCell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;
table.AddCell(new Phrase("    SL.NO", font1));
table.AddCell(new Phrase("   SUBJECTS", font1));
table.AddCell(new Phrase("   MARKS", font1));
table.AddCell(new Phrase("   MAX MARK", font1));
table.AddCell(new Phrase("   CLASS AVG", font1));
Doc.Add(table);

无需定义DefaultCell的属性那么多次。无需像这样嵌套Phrase构造函数:new Phrase(new Phrase("content"))

关于c# - 如何使用itextsharp在pdf中仅设置表格的垂直线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32774984/

10-09 06:01