2017-05-16 4 views
0

私はPhp5.3.13とSymfony2を使用して、PHPEXcelでHTMLテーブルのExcelファイルを変換します。PHPExcel getHyperlinks by column

1つの動作すること:

$objPHPExcel->getActiveSheet()->getColumn('N4')->hasHyperlink(); 
$url = $objPHPExcel->getActiveSheet()->getCell('N4')->getHyperlink()->getUrl(); 
$url = str_replace('../old/path', '/new/path', $url); 
$objPHPExcel->getActiveSheet()->getCell('N4')->getHyperlink()->setUrl($url); 

EDITED:私はちょうどたい列でそれを行う:どのようgetHyperlinkCollection(上のループへ

$objPHPExcel->getActiveSheet()->rangeToArray('N1:N9')->hasHyperlink(); 
$url = $objPHPExcel->getActiveSheet()->rangeToArray('N1:N9')->getHyperlink()->getUrl(); 
$url = str_replace('old/path', '/new/path', $url); 
$objPHPExcel->getActiveSheet()->rangeToArray('N1:N9')->getHyperlink()->setUrl($url); 

あなたは私を見ることができます)。結果はどうですか?

ありがとうございます! @MarkBaker

答えて

1

ワークシートオブジェクトは、すべてのハイパーリンクの詳細情報を保持している、とあなたはこれが、セルアドレスでインデックス化されたハイパーリンクオブジェクトの配列を返します

$sheet->getHyperlinkCollection(); 

を使用して、その情報を取得することができます。適切なコールバックでarray_filter()を使用し、特定の範囲内のものを抽出するようにARRAY_FILTER_USE_KEYフラグを設定することができます。

+0

私はPhp 5.3を使用しているため、flagパラメータは存在しません。私は自分の投稿を編集しました@MarkBaker –

+0

結果配列にどのようにループするのですか? @MarkBaker –