PHPでExcelを読み書きする

PHP No Comments »

PHPでEXCELを読み書きするには、

  • Spreadsheet_Excel_Writer
  • Spreadsheet_Excel_Reader

が便利です。
ドキュメントの使い方だけを載せているサイトは沢山ありますが、インストール方法を載せているサイトはぜんぜん無いので書いておきます。

WriteはPEARに登録されていますが、Readerは手動でインストールする必要があります。それにWriteの利用にはOLEのインストールも必要になります。WriterとOLEは共に開発版だったので、-fオプションをつけてインストールする必要があります。

pear install -f OLE
pear install -f Spreadsheet_Excel_Writer

次にReaderのインストールですが、SourceForgeで公開されているので、書庫を保存します。
必要なファイルはExcelフォルダとその中にある2つのファイル「reader.php」と「oleread.inc」です。
Excelのディレクトリごと、PEAR保存フォルダの「Spreadsheet」ディレクトリにコピーします。

本来はこれで仕えるはずですが、残念ながらそうは行きません。

reader.phpを編集してrequireするファイル名を変更します。31行目を削除またはコメントアウトして、1行追加してください。

//require_once 'Spreadsheet/Excel/Reader/OLERead.php';
require_once 'oleread.inc';

OLERead.phpは検索しても出てこないので、PEARに登録するときにこの名前にするつもりだったとか、開発環境ではこの名前になっているとか言う落ちでしょう。自分でもたまにやりますから。これでSpreadsheet_Excel_Readerが動くようになりました。このライブラリの使い方は別の機会に。
おまけ
Writerの解説ページ

Excelを読むにはPerlとPHPのどちらが便利?

PHP, Perl No Comments »

Excelのデータを読む必要が出てきました。
稼動しているシステムでは表向きはPHP、内部はほぼPerlという、
純粋なPHPプログラマにはお手上げのシステムです。
もちろん私はPerlerなので、痛くも痒くもありませんが。

さて、例によってPerlとPHPの間にゴングが鳴らされました。
Perlはお決まりのものがあるので置いといて、PHPのPEARでExcelを探してみると・・・

  1. Spreadsheet_Excel_Writer: Package for generating Excel spreadsheets
  2. Structures_DataGrid_DataSource_Excel: DataSource driver using Excel spreadsheets
  3. Structures_DataGrid_Renderer_XLS: Renderer driver using PEAR::Spreadsheet_Excel_Writer

この3つがヒットしました。
ちなみに、PECLには登録なしでした。
なんかいまいちっぽいので、PEARに登録の無いものを探してみることに。

PHPExcelなるものを発見しました。
このライブラリを取り上げているサイトは多いけど、
実際に使っていたり、サンプルコードを掲示しているサイトが一つも無い・・・
Documentを読んだ限りでは多機能だとわかりますが、
本当に動くかどうか検証されていないものをシステムに入れるわけには行きません。

やはり使い慣れたPerlモジュール「Spreadsheet::ParseExcel」の出番ですか・・・

PHP:GDでPNG画像を作る

PHP No Comments »

GDはイメージリソースを作ると、黒で塗りつぶすという余計な事をやってくれます。
そのため、まず間違いなく塗りなおす作業が必要です。
ちなみに、ImageMagickやPerlMagickでは xc:none で透明なキャンバスを作れます。

$image = imagecreatetruecolor( $width, $height ); // イメージリソースを作成
imagealphablending( $image, false ); // アルファブレンディングを無効(謎)
imageSaveAlpha( $image, true ); // アルファチャンネルを有効(謎)
$transparent = imagecolorallocatealpha( $image, 0, 0, 0, 127 ); // 透明度を持つ色を作成
imagefill( $image, 0, 0, $transparent ); // 塗りつぶす


以下のように、透明色だけを設定した場合、
その画像自体では透明になるけれど、他の画像と合成すると透過しなくなる。

// 透明色を灰色に設定(灰色が無い前提)
$transparent = imagecolorallocate( $image, 127, 127, 127 );
ImageColorTransparent( $image, $transparent );

MySQL文のエスケープ

MySQL, PHP No Comments »

基本的に使うのはMySQLなので。

mysql_escape_string()は非推奨で、
mysql_real_escape_string()がお勧めだったのか。

バイナリ使わないから、あんまり関係ないみたいだけど、
非推奨だと無くなるかもしれないし、切り替えますか。

PHP:日付から曜日を求める

PHP No Comments »

いい加減覚えないと。
PHPなら一発で出来る関数ありそうだけど。

$date = ’2008-09-01′;
$wday = strftime( ‘%a’, strtotime( $date ) );
echo $wday;

> Mon

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン