2012 年 4 月 1 日

Webアプリのフォーム入力にExcelも利用しよう

PHPExcel

Webアプリなんだから、フォームで入力すればいいだろうと考えがちですが、入力項目が多かったり、申請書のように慎重に入力しないといけないものは、なんとなくせかされているようで、記入しづらいものです。

そんなときは、入力フォームとして、エクセルファイルを利用するのもひとつの方法です。

サーバーがWindowsならまだしも、Linuxサーバでは、MicrosoftのOfficeファイルの扱いは難しいです。しかし、PHPならPHPExcelで簡単にシートのセルの内容を取り出すことができます。

Excelには大きくわけて、Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsxの2種類が存在します。後者は基本的にXMLファイルですが、いざ読もうと思うと面倒です。

PHPExcelはどちらのファイルにも対応していて、簡単に扱うことができます。先頭のシートのA1セルの内容を読み込むサンプルを示しておきます。

フォームを作成したエクセルファイルを一旦ダウンロードしてもらって、記入後アップロードして、内容を検査するといったことを想定しています。

$objPHPExcel = PHPExcel_IOFactory::load("hoge.xls");
$objPHPExcel->setActiveSheetIndex(0);
echo $objPHPExcel->getActiveSheet()->getCell("A1")->getValue();

エクセルのセルのロック(Excel2003なら書式メニュー→セル→保護※シートのロックで有効になります)、入力規則、入力モード(Excel2003なら、データメニュー→入力規則)、VBAマクロでの検査とあわせて利用すると、エクセルを使ったフォーム入力も場合によっては便利で優しいUIになります。

しかし、サーバサイドでも同様の検査が必要なので、開発保守時は二度手間になりますね。