我想将我的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);
答案 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);
我不知道数据库代码是否正常;您有责任知道如何从数据库中获取正确的数据,但请将您的非对称代码与我更改后的逻辑代码进行比较。