1

我正在尝试使用PEAR::HTML_Table包从多维数组 $data 生成一个表。

这是 $data 的转储:

Array
(
    [0] => Array
        (
            [0] => Office
            [1] => Canvasser
            [2] => Fundraising Hrs
            [3] => PAC/Hr no PFU
            [4] => PAC $ no PFU
        )
    [1] => Array
        (
            [0] => TBS1
            [1] => Vatcher, Georgia
            [2] => 29
            [3] => 8.295
            [4] => 481
        )
)

编辑:第一个数组是我的 THEAD 标签行,任何其他数组都将是 TBODY 标签中的行。

这是我的代码:

$data = $worksheet->toArray('', true, false, false); // PHPExcel

// build table
$table = new HTML_Table(array('class' => 'dt'), 0, true);
$thead =& $table->getHeader();
$tbody =& $table->getBody();

// loop through rows
for ($r = 0, $lr = count($data); $r < $lr; $r++) {
    // loop through columns
    for ($c = 0, $lc = count($data[$r]); $c < $lc; $c++) {
        if ($r == 0) {
            $thead->setCellContents($r, $c, $data[$r][$c]);
        } else {
            $tbody->setCellContents($r, $c, $data[$r][$c]);
        }
    }
}

// output html
echo $table->toHtml();

当它输出 HTML 时,它会返回一个表格,其中包含一个额外的行,其中包含 TBODY 标记中的空白单元格。我似乎无法弄清楚它为什么这样做。获得正确的输出对我来说很重要,因为我将此输出发送回 JavaScript 文件以进行进一步处理。

我怎样才能解决这个问题?

4

1 回答 1

1

您需要为 tbody 中的行重置计数器。

第一个主体单元格获取坐标(1,0),但应该具有(0,0)- 行位置从 0 开始,而不是从 1 开始。所以你隐含地告诉HTML_Table在第一行之前添加一个清晰的行。

要修复它,请在块中使用$r - 1而不是。并了解.$relseforeach()

于 2013-07-24T07:12:33.460 回答