我一直在寻找如何合并两个单元格,我发现了Rowspan和Nested两个答案。我不能用这两个函数创建我的表,因为我不知道如何在开始和结束时合并单元格。我一直在尝试很多方法,但这让我发疯。
我要制作的表有9列3行。所以,我希望表格看起来像:
| Header 1 | Header 2 | Header 3 | Header 4 | Header 5 | | | | H1 | H2 | H3 | H4 | H5 | | | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | Header 1: cs=1, rs=2. Header 2: cs=1, rs=2. Header 3: cs=5, rs=1. H1: cs=1, rs=1. H2: cs=1, rs=1. H3: cs=1, rs=1. H4: cs=1, rs=1. H5: cs=1, rs=1. Header 4: cs=1, rs=2. Header 5: cs=1, rs=2.
cs:colspan,rs:rowspan。
标题3包含H1,H2,H3,H4,H5。
我认为解决方案非常简单,但我找不到它。我希望你能理解哪个问题是因为我还无法上传图片。
答案 0 :(得分:3)
有几种方法可以做你想做的事。由于您的表结构不是太复杂,也许最简单的方法是使用九列创建PdfPTable,并在创建行时使用每个单元格的Rowspan和Colspan属性一次添加一个单元格。
下面的代码将创建一个与您描述的完全相同的表格:
private void CreatePdf() {
using (FileStream fs = new FileStream("TableTest.pdf", FileMode.Create)) {
Document doc = new Document(new iTextSharp.text.Rectangle(800f, 800f));
PdfWriter.GetInstance(doc, fs);
doc.Open();
PdfPTable table = new PdfPTable(9);
// Hdeaer row.
table.AddCell(GetCell("Header 1", 1, 2));
table.AddCell(GetCell("Header 2", 1, 2));
table.AddCell(GetCell("Header 3", 5, 1));
table.AddCell(GetCell("Header 4", 1, 2));
table.AddCell(GetCell("Header 5", 1, 2));
// Inner middle row.
table.AddCell(GetCell("H1"));
table.AddCell(GetCell("H2"));
table.AddCell(GetCell("H3"));
table.AddCell(GetCell("H4"));
table.AddCell(GetCell("H5"));
// Bottom row.
table.AddCell(GetCell("D1"));
table.AddCell(GetCell("D2"));
table.AddCell(GetCell("D3"));
table.AddCell(GetCell("D4"));
table.AddCell(GetCell("D5"));
table.AddCell(GetCell("D6"));
table.AddCell(GetCell("D7"));
table.AddCell(GetCell("D8"));
table.AddCell(GetCell("D9"));
doc.Add(table);
doc.Close();
}
}
private PdfPCell GetCell(string text) {
return GetCell(text, 1, 1);
}
private PdfPCell GetCell(string text, int colSpan, int rowSpan ) {
PdfPCell cell = new PdfPCell(new Phrase(text));
cell.HorizontalAlignment = 1;
cell.Rowspan = rowSpan;
cell.Colspan = colSpan;
return cell;
}
正如您所看到的,我已经在帮助方法中包装了PdfPCells的构造,允许您设置每个单元格的文本内容以及Rowspan和Colspan属性。
如果您还没有这样做,我建议您查看iTextSharp表格中的本教程:
答案 1 :(得分:2)
最好为排成行的单元格添加空单元格。
答案 2 :(得分:0)
Rowspan不是答案,因为iTextSharp中没有rowspan。您必须使用嵌套表。
Colspan是可行的,但不是rowpan。
对于你的表,我只会使用一个colspan并在Header 1和D1之间使用空单元