我想根据我从存储过程中返回的记录数,使用带有动态行数的itextsharp生成pdf。
例如,如果我的存储过程中有3条记录,我希望itextsharp像这样生成它:
(第1栏)(第2栏)(第3栏)
第1行面包1 $ 93215321
第2行牛奶1.5 $ 12345678
第3行香肠5 $ 54678912
对于下一个pdf,如果存储过程包含5条记录,它将显示3列和5行。
这可以使用itextsharp吗?请有人帮助我:))!
谢谢!
答案 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
实例。
警告:有些人可能会将您的问题视为“家庭作业”问题。您的问题没有显示您尝试过的内容。通常人们希望您在发布问题之前做一些努力。不要射击信使。我只是给你一个抬头,这样如果你的问题被投票或关闭,你就不会感到惊讶。