itextsharp中的动态行数

时间:2014-10-28 15:45:35

标签: c# sql-server pdf stored-procedures itextsharp

我想根据我从存储过程中返回的记录数,使用带有动态行数的itextsharp生成pdf。

例如,如果我的存储过程中有3条记录,我希望itextsharp像这样生成它:

(第1栏)(第2栏)(第3栏)

第1行面包1 $ 93215321

第2行牛奶1.5 $ 12345678

第3行香肠5 $ 54678912

对于下一个pdf,如果存储过程包含5条记录,它将显示3列和5行。

这可以使用itextsharp吗?请有人帮助我:))!

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。我甚至写过一本关于它的书。

您可能想要使用PdfPTable课程。这个课程在chapter 4中解释。例如,参见HeaderFooter1示例,其中我遍历包含许多电影标题和这些电影放映的数据库。结果是一个PDF,其表格的行数与某一天的记录数相同:header_footer_1.pdf

我发现您使用的是iTextSharp,因此您可能需要查看C# port of the examples

创建PdfPTable非常简单。您只需创建该类的实例,然后向其中添加PdfPCell个实例。这是一个引入rowspan和colspan的例子:

// a table with three columns
PdfPTable table = new PdfPTable(3);
// the cell object
PdfPCell cell;
// we add a cell with colspan 3
cell = new PdfPCell(new Phrase("Cell with colspan 3"));
cell.Colspan = 3;
table.AddCell(cell);
// now we add a cell with rowspan 2
cell = new PdfPCell(new Phrase("Cell with rowspan 2"));
cell.Rowspan = 2;
table.AddCell(cell);
// we add the four remaining cells with addCell()
table.AddCell("row 1; cell 1");
table.AddCell("row 1; cell 2");
table.AddCell("row 2; cell 1");
table.AddCell("row 2; cell 2");

在您的情况下,只需在短代码片段中创建一个包含3列的PdfPTable,然后在存储过程的结果集中创建所有记录的循环即可。将每个字段的内容放在PdfPCell中,然后将该单元格添加到PdfPTable。完成循环后,将PdfPTable添加到Document实例。

警告:有些人可能会将您的问题视为“家庭作业”问题。您的问题没有显示您尝试过的内容。通常人们希望您在发布问题之前做一些努力。不要射击信使。我只是给你一个抬头,这样如果你的问题被投票或关闭,你就不会感到惊讶。