はてなブックマーク - Apache POIをPHPで動かせるようにしてみた
    このエントリーをはてなブックマークに追加

    お久しぶりです。
    最近ホークスの秋季キャンプに行ってきた萩原です。

    今回Fusic勉強会 #1で発表しました。
    ご参加いただいた皆様ありがとうございました!
    まだ試行錯誤の段階ですがいい勉強会にしていけたらいいなと思います。

    発表内容の詳細は上のスライドを見ていただくとして、
    発表でも紹介したApache POIをPHPで動かしたものをご紹介します。

    Apache POIとは?

    poi.apache.org/

    Apache POI
    ExcelやWordなどのOfficeのファイルを書きだすJavaのライブラリです。
    ただまぁ公式を見てもらったらわかると思いますが、Excelだけやたら充実しまくってます。
    つか公式見てもWordとかPowerpointの使い方分かりませんし、検索してもあまり情報が見つかりません・・・。

    POIのExcelですが、値の埋め込みやセルのコピー、スタイルのセットなど
    通常Excelで行える操作は一通り行えます。
    (できることはPHPExcelと同等以上かと思います。)

    POIをPHPから動かしたい!

    そんなPOIをPHPから動かしたいと考えました。
    現在それとなくGithubで作成中です。

    やってることは

    ①:出力したい情報(埋め込む値やスタイルの情報)をまとめて、CSVに出力。
    ②:①のCSVファイルとテンプレートファイル、出力先のファイルを指定してexecでjavaを叩く。
    ③:出力されたExcelファイルをPHPで処理。

    といった流れになっています。

    こんな感じでExcelを出力できるようにしています。

    $ExcelExport = new PoiPHP();
    $ExcelExport->settings(array(
    	'poi_path' => dirname(__FILE__) . '/Vendor/poi/poi-3.9',
    	'opencsv_path' => dirname(__FILE__) . '/Vendor/poi/opencsv-2.3/deploy/opencsv-2.3.jar',
    	'tmp_csv_dir_path' => dirname(__FILE__) . '/export',
    ));
    $ExcelExport->addString(0,0,0,‘test');
     
    $readfile = dirname(__FILE__) . ‘template.xlsx';
    $outFile = dirname(__FILE__) .’export.xlsx';
     
    $ExcelExport->excelExport($readfile, $outFile);

    詳細な使い方はgithubのREADMEを参照してもらえたらわかると思います。

    POIを使うメリット

    とは言っても、正直色々設定が面倒なので
    通常帳票を出力するにあたってはPHPではreviserやPHPExcelで十分だと思います。

    POIを使うメリットとしては
    ①シートをまたいだ計算式を含むテンプレートに値を埋め込む時
    reviserだとPHPエラーで落ちます。
    PHPExcelだとうまくいきますが、あまり複雑だったりするとPHPエラーで落ちてしまったりするようです。(詳細不明)

    ②テンプレートにマクロがいて、そのマクロを出力後に使用したい時
    まだ、これを案件で使用してはいないですが、個人的にこれは熱いです。
    (reviserやPHPExcelではマクロが削除されたりPHPエラーで落ちたりします。)

    もし、reviserやPHPExcelで出力できなくて困っている方はPOIの使用を検討してみてください!
    poi-phpも値の挿入やスタイルのセットは問題なく動作すると思います。
    (画像の挿入などで現在苦戦中ですが・・・)

      はてなブックマーク - Fusic勉強会 #1 を開催します
      このエントリーをはてなブックマークに追加

      小山です。

      最近、中途採用担当になりました。イケテルと思う方、是非Fusicもチェックしてみてください。

      本日は会社主催の勉強会の告知です。

      Fusic勉強会開催のきっかけ

      Fusicでは毎週、社内技術発表を1時間程度行っていたのですが、このところ刺激が少なくなったと感じてきたので、

      「公開したら多少刺激的になるのでは?」と、社外の人にも参加できる会社主催の勉強会にしてしまおうということになりました。

      ということで、11月7日(木)に第1回「Fusic勉強会 #1」を開催します!

      Fusic勉強会 #1

      Fusic勉強会のルール

      現段階では以下のようなルールで進行していこうと思っています。

      - 19:00から、Fusic福岡本社で開催。
      - 1枠は15分もしくは30分での発表。
      - 1週間前に開催告知。
      - 基本的に1時間程度で終了。
      - 新人のためにも基礎的なことも率先して!

      注意点

      Fusic勉強会への参加定員ですが、もともとの経緯が「社内技術発表の公開」なので、Fusic社員が優先となっています。
      さらに、開催会場が20名程度の会議室になります。

      なので、社外から参加募集する人数は非常に少なくなります。申し訳ありません。

      Fusic勉強会に期待していること

      勉強会の形式は基本的にセミナー形式ですが、発表内容は発表者依存です。
      PHPやRubyに限定しているわけではないので、発表ジャンルが発散する分、飽きないものになることを期待しています。

      そのうちBeagleBone Blackの話とかLSIの話とかでてくるかもしれません。

      まだまだはじめる段階なので、今後も試行錯誤して「刺激的なもの」にできるようにしていきたいと思います。

      「こんなやり方はおもしろいよ」というものがありましたら教えてください。

      ただし、「闇(※)」はやりません。会社主催ですから。

      ※) レガシーズが飛んでくるような勉強会

        はてなブックマーク - Fukuoka.pmでクイズを支える技術について発表してきました
        このエントリーをはてなブックマークに追加

        Fusic 平田です。
        なんだか連続で記事を書く羽目になっていますが、まあ気にしないことにします。

        10/26に行われたFukuoka Perl Workshop #24にて、久しぶりに発表をしてきました。
        他の参加者の方々のエントリなどは以下の通り。
        福岡のPerl Workshop「Fukuoka.pm#24」に行ってきました! – ゆーすけべー日記 v2
        Fukuoka Perl Workshop #24 YAPC::Asia レポート 2013 – 新なんでもありBLOG
        Fukuoka.pmに乱入してきた! – Hachioji.pm 日めくりテックトーク
        Fukuoka Perl Workshop #24 行ってきた(あと、自分の知ってる昔話) – てっく★ゆきろぐ Rev2
        2013年のCPANモジュール作成事情 – charsbar(slideshare)

        話したこと

        自分の発表スライドは以下になります。

        当日のデモの代わりの動画は以下になります。

        当日の発表内で公開すると言っていた、iPadスタンドのPDFは以下になります。

        ipadスタンド(PDF 2.95KB)

        ※ 全部山折りです。
        ※ プリンタで印刷すると、余白の関係でサイズ調整が微妙にずれたりするので、キンコーズとかで印刷したほうがいいかもしれません。

        補足とか

        まず、暇ではありません。
        ※ これ書いておかないと、すごく誤解されまくるので。
        IT会社の10周年だし、何かしら普段使っている技術も活用したほうがいいよね、という建前のもとにいろいろ進めました。
        ある程度たたき台ができて、その後はディテールにどこまで凝れるか、というのが焦点になり。
        細部に凝れば凝るほど権利的な部分がアウト方向に進んでいったのですが、あくまで内輪の余興ということでご容赦ください。

        日々業務の合間を縫いつつ、同僚から「あいつは何をやっているんだ」という目で見られていたかどうかはよく分かりませんが。
        勉強会の発表ネタとして昇華できたので、良かったんじゃなかろうかと。
        ちなみに、当日発表の中で一番評価が高かったのはiPadスタンドでした。
        ※ iPadスタンドは別の方に作成していただきました。ナイテナイヨ?

        Fukuoka.pmについて

        久々に参加したのですが、すごく充実した内容でした。
        ※ ustの配信で若干じゃなくミスってたので、そのへんは次回までに改善しておきます。。。
        誰かが言ってたんですが、発表者と聞いている人の距離がかなり近く、まったり進む感じが非常に良い勉強会です。
        次回もそのうちあるでしょうし、天神PerlとかPerl入学式とかもあると思うので、また参加したいと思います。

        遠征していただいた皆様、遠征支援いただいたJPAさん、会場を提供いただいたヌーラボさん、主催の津留さんはじめ参加者の皆様、ありがとうございました。ぺこぺこ。