使用iText将数据放入表中

时间:2017-09-18 07:06:17

标签: gridview itext export-to-pdf

首先我把数据放在一个笨拙的网格视图中 作为在数据库上运行存储过程的结果,获得数据 然后我尝试在表中添加此数据并尝试将数据导出到pdf。

这是我的代码:

 Dim GridView1 As New GridView
    Dim pdfDoc As New iTextSharp.text.Document(iTextSharp.text.PageSize.A1, 10.0F, 10.0F, 10.0F, 0.0F)
    pdfDoc.Open()
    Dim pdfTable As New PdfPTable(3)
    For Each row As GridViewRow In GridView1.Rows
        Dim Val1 As String = row.Cells(0).Text
        Dim Val2 As String = row.Cells(1).Text
        Dim Val3 As String = row.Cells(2).Text
    Next
    pdfDoc.Add(pdfTable)
    pdfDoc.Close()

现在如何将这些值(val1,val2,val3)添加到表中,然后导出为pdf?

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

这是使用表格的一些示例iText代码。

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfPTable table = new PdfPTable(8);
for(int aw = 0; aw < 16; aw++){
    table.addCell("hi");
}
document.add(table);
document.close();

答案 1 :(得分:1)

这是错误的:

Dim pdfTable As New PdfPTable(3)
For Each row As GridViewRow In GridView1.Rows
    Dim Val1 As String = row.Cells(0).Text
    Dim Val2 As String = row.Cells(1).Text
    Dim Val3 As String = row.Cells(2).Text
Next

这是错误的,因为您只是定义了三个string值而没有对这些值做任何事情。为什么会这样?你的代码中没有任何事情发生。

您需要将这些string值添加到您刚定义的table

Dim pdfTable As New PdfPTable(3)
For Each row As GridViewRow In GridView1.Rows
    pdfTable.Add(row.Cells(0).Text)
    pdfTable.Add(row.Cells(1).Text)
    pdfTable.Add(row.Cells(2).Text)
Next

或者更确切地说,正如在这个问题的答案中所解释的那样:dataGridView to pdf with itextsharp

PdfPTable pdfTable= new PdfPTable(3);
foreach(DataGridViewRow row in dataGridView1.Rows) {
    foreach (DataGridViewCell celli in row.Cells) {
        pdfTable.AddCell(celli.Value.ToString());
    }
}
doc.Add(pdfTable);

您需要应用较小的更改来将此C#代码段移植到VBA代码,但这不应该是一个问题。

也不是说如何定义PdfPTable的单元格样式有很多变化。它们记录在官方网站上。