PHPWordのテンプレートで改行を含む文字列をsetValueで追加する

技術関係

docxを読み込んでPHPで編集できるPHPWord
予めテンプレートを準備してPHPで文字を挿入するのが便利

なんだけど、普通に改行を入れようとすると空白文字になる。なるほどタグを突っ込むのかと思い、nl2brをしてみると不正なファイルですなどと言われてしまう。

で、ぐぐったところ、以下の様な記事を発見

This seems to work :
$template = str_replace(“\n”,”<w:br/>”,$template);

seh. setValue() and new line

なるほど、たしかにdocxはxml形式なんだから、勝手にbrなんか突っ込んだらそりゃエラーになるわ。
で解決

require_once './PHPWord.php';
$PHPWord = new PHPWord();
// テンプレートを読み込む
$document = $PHPWord->loadTemplate('Templath.docx');
// 改行を置き換える
$document->setValue('message', "ほげほげ" . "<w:br />"  . "ふがー");
// 置き換えたファイルを保存する
$document->save( "Output.docx");

ちなみに、便利っぽいPHPWordだけど初期状態で日本語を使おうとすると文字化けする。
その対策はこちら。

PHPWord/Templath.phpのsetValue()からutf8_encodeをコメントアウトします。

PHPWordを使ってPHPで日本語Word文書を出力する

タイトルとURLをコピーしました