FuelPHPでphpoffice/phpwordを利用するメモ

2014 年 6 月 12 日PC・IT

Pocket

以前、FuelPHPでphpwordを使ってワードファイル(docx)を出力できるようにした時のメモ | Lunarian's Blogというエントリーをあげたのですが、その後、私が利用したphpwordをforkして進化したと思われるphpoffice/phpwordを発見しました(Github: PHPOffice/PHPWord · GitHub)。日本語に対応し、Pakagistにも登録(該当ページ:phpoffice/phpword – Packagist)があり、使い方は同じっぽいのでこちらを利用する方法に変更します。以下、使い方を簡単にメモ。

fuelPHPへの導入方法− composerをつかう

fuelPHPは、バージョン1.6からパッケージ管理にcomposerが利用されています。(composer公式サイト:Composer
phpoffice/phpword – Packagistがありますので、composerで導入することができます。

composer.json(composer.pharと同一フォルダにある)のrequire部分に、下記記載を追記。

"phpoffice/phpword": "0.9.1"

あとは、ターミナル(黒い画面)で

composer.phar update

で導入されます。phpwordは、ルートのvendorファイル下に配置され、class PHPWordにパスが通ります(という言い方が正しいかよくわからないけど、オートロードされるということ)。従って、普通に「new $phpword = new \PhpOffice\PhpWord\PhpWord();」でインスタンス生成で、利用できます。

使い方

※createWrite部分で誤りがあったため修正(2014/6/12)

 //Wordファイルテスト
public function action_word_create() {
$this->template = false;
$phpword = new \PhpOffice\PhpWord\PhpWord();
$section = $phpword->createSection();
//フォントスタイルの設定
$default_font_style = array();
//行スタイルの設定
$right_paragraph_style = array(
'align' => 'right',
'spaceBefore' => false,
'spaceAfter' => false,
'spacing' => 1.3 //行間
);
$center_paragraph_style = array(
'align' => 'center',
'spaceBefore' => false,
'spaceAfter' => false,
'spacing' => 1.3 //行間
);
//描画
$section->addText('テキスト追加テスト', $default_font_style, $right_paragraph_style);
$section->addTextBreak();
$section->addTextBreak();
$section->addText('テキスト追加できるかな?', $default_font_style, $center_paragraph_style);
$section->addTextBreak();
$dir = dirname(dirname(dirname(__FILE__))) . '/tmp/';
//新規出力
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpword, 'Word2007');
$objWriter->save($dir.'testfile.docx');
//Debug::dump($objWriter);
}

↓こんな感じになります。
生成したワードファイル

参考リンク

似たようなエントリ

2014 年 6 月 12 日PC・IT