跳至主要內容

表格组件

xsx大约 1 分钟组件表格组件

说明

  1. 坐标原点为左上角。
  2. 必须设置表格行高度。
  3. 支持自定义坐标。
  4. 支持行合并与列合并。
  5. 支持跨页合并。
  6. 支持自定义边框样式。
  7. 支持多个任意组件。
  8. 表格行超出页面高度自动分页(支持内容分页与整行分页)。
  9. 合并行时,被合并列需要使用 null 填充。

示例

// 创建文档
Document document = PdfHandler.getDocumentHandler().create();

// 创建页面
Page page = new Page(document);

// 定义每列宽度
float width = 100F;
// 定义行高
float height = 70F;

// 创建表格
Table table = new Table(document.getCurrentPage());
// 设置列宽(4列)
table.setCellWidths(width, width, width, width);
// 设置显示边框
table.setIsBorder(true);

// 添加行
for (int i = 0; i < 10; i++) {
    // 创建行
    TableRow tableRow = new TableRow(table);
    // 设置行高
    tableRow.setHeight(height);
    // 第3行合并列
    if (i == 2) {
        // 创建文本域
        Textarea textarea = new Textarea(table.getPage());
        // 设置文本
        textarea.setText("第" + i + "行" + "合并列");
        // 创建单元格
        TableCell cell = new TableCell(tableRow);
        // 设置合并列数
        cell.setColspan(3);
        // 添加组件
        cell.addComponents(textarea);
        // 添加单元格
        tableRow.addCells(cell);
    }else {
        // 添加列
        for (int j = 0; j < 4; j++) {
            // 被合并列
            if (i > 3 && i < 6 && j == 0) {
                // 添加占位
                tableRow.addCells((TableCell) null);
            } else {
                // 创建文本域
                Textarea textarea = new Textarea(table.getPage());
                // 设置文本
                textarea.setText("第" + i + "行" + "第" + j + "列");
                // 创建单元格
                TableCell cell = new TableCell(tableRow);
                // 添加组件
                cell.addComponents(textarea);
                // 第4行第1列合并2行
                if (i ==3 && j == 0) {
                    // 设置合并行数
                    cell.setRowspan(2);
                }
                // 添加单元格
                tableRow.addCells(cell);
            }
        }
    }
    // 添加行
    table.addRows(tableRow);
}


// 绘制
table.render();

// 添加页面
document.appendPage(page);
// 保存文档
document.save("E:\\PDF\\pdfbox\\table\\test.pdf");
// 关闭文档
document.close();