如何在android中使用itextpdf以正确的方式放置表格?

时间:2017-04-08 16:27:20

标签: sqlite itext

我想将我的Sqlite导出为PDF。我能够做到这一点,但不是将结果放在一行,而是将结果放在我拥有的另一列中。我想要的是用数据库结果填充同一列中的行(增加行)。这就是我所拥有的,你能帮助我吗?

 db = new Database(FirstActivity.this);
        Cursor c = bd.getGroupsNamesMachines();

        PdfPTable table = new PdfPTable(2);


        cell = new PdfPCell(new Phrase("groups"));
        cell2 = new PdfPCell(new Phrase("machines"));
        if (c.moveToFirst()) {

            do {

                String groups = c.getString(c.getColumnIndex("groupname"));


                cell3 = new PdfPCell(new Phrase(groups));
                table.addCell(cell3);

            } while (c.moveToNext());

        }

        cell.setColspan(1);
        cell2.setColspan(2);
        cell3.setColspan(1);
        table.addCell(cell);
        table.addCell(cell2);
        table.addCell(cell3);

1 个答案:

答案 0 :(得分:3)

请阅读文档或观看视频:https://www.youtube.com/watch?v=6YwDME0Fl1c(在前10分钟结束之前,您将知道如何创建一个显示美国所有州的表格)。可以在此处找到该示例的代码:set format of header row in itext

在你的情况下,你正在做一些非常奇怪的事情。您创建一个包含2列的表。如果每条记录都有两个字段,那就没问题。但是,在添加标题单元格之前添加正文单元格。我想你正在尝试创建一个包含3列的标题行(这是不合逻辑的),你可能没有完成最后一行(并且iText默认只添加完整的行)。

你需要这样的东西:

// Table
PdfPTable table = new PdfPTable(2);
// Header
PdfPCell cell1 = new PdfPCell(new Phrase("groups"));
PdfPCell cell2 = new PdfPCell(new Phrase("machines"));
table.addCell(cell1);
table.addCell(cell2);
// Data
db = new Database(FirstActivity.this);
Cursor c = db.getGroupsNamesMachines();
if (c.moveToFirst()) {
    do {
        String group = c.getString(c.getColumnIndex("groupname"));
        cell1 = new PdfPCell(new Phrase(group));
        table.addCell(cell1);
        String machine = c.getString(c.getColumnIndex("machinename"));
        cell2 = new PdfPCell(new Phrase(machine));
        table.addCell(cell2);
    } while (c.moveToNext());
}
document.add(table);

我不知道数据库代码是否正常;您有责任知道如何从数据库中获取正确的数据,但请将您的非对称代码与我更改后的逻辑代码进行比较。

  • 首先定义标题,然后将其添加到表格
  • 然后遍历数据,并逐行添加数据
  • 永远不要添加比列更多的单元格!