sMash a Office

Posted by Kenta Takahashi on 4月 14th, 2009. Other posts by Kenta Takahashi

sMashでは、Apache POIをモジュールとして提供しています。Apache POIは、Microsoft Officeのファイルを操作するAPIを提供するJavaのモジュールです。これを利用することで、sMashで容易にApache POIの利用環境を作ることができます。また、Java Bridgeを利用することで、PHPを用いてMicrosoft Officeのファイルを操作することが可能です。

●利用するための準備

Apache POIは、zero.office.integrationという名前で提供されています。このモジュールへの依存性を、ivy.xmlに追加します。これで準備は完了です。

●Excelファイルを作ってみる

まず最初に、Excelファイルを生成してみましょう。せっかくですので、ここではPHPでやってみましょう。generate.phpとして、次のファイルをpublicフォルダに作成してください(コピー&ペーストするとダブルクォーテーションが全角になるので注意して下さい)。

<?php
 java_import(”java.io.FileOutputStream”);
 java_import(”org.apache.poi.hssf.usermodel.HSSFWorkbook”);
 java_import(”org.apache.poi.poifs.filesystem.POIFSFileSystem”);
 $filedir = zget(”/config/root”).”\\public\\sMash.xls”;
 try{
  //新規ワークブックを作成する
  $wb = new HSSFWorkbook();
  $fileOut = new FileOutputStream($filedir);

   //新規ワークシートを作成する
  $sheet = $wb->createSheet();
  $wb->setSheetName(0, “シート01″, $wb->ENCODING_UTF_16);

  //A1に日本語を書き込む
  $row = $sheet->createRow(0);
  $cell = $row->createCell(0);
  $cell->setEncoding($wb->ENCODING_UTF_16);
  $cell->setCellValue(”sMashでExcelファイルを作りました!”);

//終了処理
  $wb->write($fileOut);
  $fileOut->close();
  echo(”Excelファイルの作成が完了しました!”);
} catch (Exception $e) {
echo $e;
echo(”処理が失敗しました”);
}
?>

作成したら、sMashアプリケーションを起動し、http://localhost:8080/generate.phpにアクセスしてみてください。publicフォルダ内にsMash.xlsファイルが生成されているはずです。

●Excelファイルを読み込んでみる

では、そのExcelファイルを読み込んで、PHPで文字列として表示してみましょう。read.phpとして、次のファイルをpublicフォルダに作成してください(コピー&ペーストするとダブルクォーテーションが全角になるので注意して下さい)。

<?php
 java_import(”java.io.FileInputStream”);
 java_import(”org.apache.poi.hssf.usermodel.HSSFWorkbook”);
 java_import(”org.apache.poi.poifs.filesystem.POIFSFileSystem”);
 $filedir = zget(”/config/root”).”\\public\\sMash.xls”;
 try{
//ファイル読み込み
  $filein = new POIFSFileSystem(new FileInputStream($filedir));

//1つ目のシートの、A1を示すセルのオブジェクトを取得する
$wb = new HSSFWorkbook($filein);
$sheet = $wb->getSheet($wb->getSheetName(0));
  $row = $sheet->getRow(0);
  $cell = $row->getCell(0);

//文字列を取得し、出力
  echo $cell->getStringCellValue();
 }  catch (Exception $e) {
  echo $e;
  echo(”処理が失敗しました”);
 }
?>

作成したら、sMashアプリケーションを起動し、http://localhost:8080/read.phpにアクセスしてみてください。”sMashでExcelファイルを作りました!”と表示されていれば成功です。

●参考情報

他にもApache POIでは、計算式を読み込んだり、セルにコメントを追加したり、そのコメントを読み込んだり、様々なAPIが提供されています。詳細については、Apache POIのWebサイトをご参照下さい。http://poi.apache.org/

Leave a Reply

Spam Protection by WP-SpamFree Plugin