我正在尝试使用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文件以进行进一步处理。
我该如何解决这个问题?
答案 0 :(得分:1)
您需要重置tbody中行的计数器。
第一个正文单元格获取坐标(1,0)
,但应该有(0,0)
- 行位置从0开始,而不是从1开始。所以你隐含告诉HTML_Table
之前添加一个清除行你的第一行。
要解决此问题,请在$r - 1
块中使用$r
代替else
。并了解foreach()
。