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