WordPressプラグイン「Contact Form 7 to Database Extension」で日本語Excel出力が欲しい part2


以前、日本語版Microsoft Excelで直接開くことの出来る、CSVフォーマット(文字コードShift-JIS)の出力部分を作成し、作者に取り込んでもらいました。(そのあたりの経緯はこちら

そこで既知の問題としてあげていたのが、「MacのExcelでは丸数字が文字化け」というものです。PHP5.4からは、mb_convert_encodingメソッドに「sjis-mac」が実装されたそうなので、CSV (Shift-JIS)については、Windows用とMacintosh用の二つを作れば事足りるのかなとは思います。しかしながら、PHP5.4にすると動かないプラグインもでて、まだまだPHP5.3を使っている人も多いはずです。

またmb_convert_encodingがいるっていうのもあれだよなぁということもあり、ならば直接Excelフォーマットで出力できないかをフワフワっと多忙な中で思っていたのでした。そして、第11回WordBench京都(参加して書いたブログ参照)の第2セッション「Trust Form」で「CSVによる出力がある」という話しの折りに「日本語は文字化けしてしまう(つまりUTF-8なCSVだから、Excelでそのまま開くと日本語が文字化けする問題)」という問題が、やはり未対応だったこともあり、「Excel出力は簡単に出来るはずだよ」っていう、近くからのつぶやきもあって、その場でPHPサンプルコードを書いて出力されることを確認しました。

それが

PHPでExcel出力

<?php header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="sample.xls");

?>
<table>
  <tr><th>項目A</th><th>項目B</th></tr>
  <tr><td>あああ</td></td>いいい</td><tr>
</table>

です。とても簡単に思えませんか。私は直感で、これなら簡単に実装できそうでした。
ということで、早速Contact Form to Database Extensionを改変してみました。

Contact Form to Database Extensionへの組み込み

手持ちではうまくいけそうだったので、作者にコードは送ってみました。組み込まれたら嬉しいなぁとか。でも簡単なので興味があったら試してみてください。

1. ExportToExcel.phpのダウンロード

http://kitaney.jp/~kitani/tools/wordpress/index.html#4

より、ExportToExcel.php.txtをダウンロードし、ExportToExcel.phpに名前変更します。

拡張子を表示させる必要があります。そのあたりは適当に検索してみてください。

2. CF7DBPluginExporter.php, CFDBViewShortCodeBuilder.php, CFDBViewWhatsInDB.phpに追加

http://kitaney.jp/~kitani/tools/wordpress/index.html#4

を参考にして3箇所追加してみてください。それほど難しいことは無いはずです。
….の真ん中にあるコードのみ追加ということになります。

これでMicrosoft Excelの出力が追加され、これで出力されたExcelデータを開くと、中に日本語文字が入っていても文字化けせずに表示できるかと思います。

しばらく実験的に使って見ることになりますが、これで問題が無ければ日本語出力の問題は解決〜ってなるんですけどねぇ。。。いやそう期待しておきましょう。

2013年1月16日 木谷

広告

WordPressプラグイン「Contact Form 7 to Database Extension」で日本語Excel出力が欲しい part2」への1件のフィードバック

  1. ピンバック: Premium Wordpress Theme、HYPAXでサイトを作る

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中