Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 如何在android中使用itextpdf正确放置表格?_Sqlite_Itext - Fatal编程技术网

Sqlite 如何在android中使用itextpdf正确放置表格?

Sqlite 如何在android中使用itextpdf正确放置表格?,sqlite,itext,Sqlite,Itext,我想将Sqlite导出为PDF格式。我可以这样做,但它不是将结果放在一行中,而是将结果放在我拥有的另一列中。我想要的是填充同一列中的行,使用数据库结果增加行数。这是我的,你能帮我吗 db = new Database(FirstActivity.this); Cursor c = bd.getGroupsNamesMachines(); PdfPTable table = new PdfPTable(2); cell = new PdfPC

我想将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);
请阅读,或在前10分钟结束前观看,您将知道如何创建一个显示美国所有州的表格。该示例的代码可在此处找到:

在你的情况下,你正在做一些非常奇怪的事情。创建一个包含两列的表。如果每条记录都有两个字段,那就可以了。但是,在添加标题单元格之前,先添加主体单元格。我认为您试图创建一个包含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);
我不知道数据库代码是否正确;您有责任知道如何从数据库中获取正确的数据,但请将您非常不对称的代码与我将其更改为的逻辑代码进行比较

首先定义标题,并将其添加到表中, 然后在数据上循环,并逐行添加数据, 在一行中添加的单元格数不得超过列数! 请阅读,或在前10分钟结束前观看,您将知道如何创建一个显示美国所有州的表格。该示例的代码可在此处找到:

在你的情况下,你正在做一些非常奇怪的事情。创建一个包含两列的表。如果每条记录都有两个字段,那就可以了。但是,在添加标题单元格之前,先添加主体单元格。我认为您试图创建一个包含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);
我不知道数据库代码是否正确;您有责任知道如何从数据库中获取正确的数据,但请将您非常不对称的代码与我将其更改为的逻辑代码进行比较

首先定义标题,并将其添加到表中, 然后在数据上循环,并逐行添加数据, 在一行中添加的单元格数不得超过列数!
请解释你希望你的结果如何。您当前的代码会导致奇怪的输出。请解释您希望结果的外观。您当前的代码会产生奇怪的输出。非常感谢。我很难理解列/行是如何工作的。你创造的好图书馆;我怎样才能得到动态细胞而不是只有两个?你能帮我吗/执行查询时,您总是知道每条记录有多少字段。您需要定义具有该数量字段的表:new PdfPTablenumFields。您不能期望iText猜测需要多少列;你需要自己定义,你可以自己定义,因为你有这些信息。非常感谢。我很难理解列/行是如何工作的。你创造的好图书馆;我怎样才能得到动态细胞而不是只有两个?你能帮我吗/执行查询时,您总是知道每条记录有多少字段。您需要定义具有该数量字段的表:new PdfPTablenumFields。您不能期望iText猜测需要多少列;你需要自己定义,你可以自己定义,因为你有这些信息。