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)、行の位置は 1 ではなく 0 から始まります。したがってHTML_Table、最初の行の前に明確な行を追加するよう暗黙的に指示します。

これを修正するには、$r - 1代わりにブロック$r内で使用します。elseについて学びforeach()ます。

于 2013-07-24T07:12:33.460 に答える