ブック読み込みサンプルコード
<?php
$read_book = "C:\PHP_SAMPLE.xlsx";
/* タイムゾーン設定 */
date_default_timezone_set('Asia/Tokyo');
/* 開始ログ出力 */
list($micro, $Unixtime) = explode(" ", microtime());
$sec = $micro + date("s", $Unixtime);
echo "処理開始 " . date("m月d日 g:i:", $Unixtime).$sec."\n";
/* 読み込みExcelブックオープン */
$book = AXLS_read_book($read_book);
if ($book == NULL){
echo "ERROR: AXLS_open_book()\n";
die();
}
$rtn = AXLS_error_code($book);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_open_book() rtn=", $rtn, " message=", $mesg . "\n";
AXLS_scrap_book($book);
die();
}
$record_ct = 0;
/* シート数繰り返し */
for ($sheet=0; $sheet<AXLS_sheet_num($book); $sheet++){
AXLS_open_sheet2($book, $sheet);
$sheet_name = AXLS_sheet_name($book, $sheet);
echo "(" . $sheet_name . ")\n";
/* 行数繰り返し */
for ($row=0; $row<AXLS_row_num($book); $row++){
echo "[行". $row . "]";
/* カラム数繰り返し */
for ($clm=0; $clm<AXLS_column_num($book, $row); $clm++){
/* カラム値出力 */
$cell = AXLS_cell_name($row+1, $clm+1);
$value = AXLS_get_cell($book, $cell);
echo $value . " ";
}
echo "\n";
$record_ct++;
}
}
echo "件数=" . $record_ct . "\n";
/* 終了ログ出力 */
list($micro, $Unixtime) = explode(" ", microtime());
$sec = $micro + date("s", $Unixtime);
echo "処理終了 " . date("m月d日 g:i:", $Unixtime).$sec."\n";
print("memory_get_peak_usage: ".memory_get_peak_usage()/1024 . "k\n");
/* Excelブック解放 */
$rtn= AXLS_scrap_book($book);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_save_book() rtn=", $rtn, " message=", $mesg, "\n";
die();
}
?>
解説
読み込みブックオブジェクトの作成
/* 読み込みExcelブックオープン */
$book = AXLS_read_book($read_book);
if ($book == NULL){
echo "ERROR: AXLS_open_book()\n";
die();
}
$rtn = AXLS_error_code($book);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_open_book() rtn=", $rtn, " message=", $mesg . "\n";
AXLS_scrap_book($book);
die();
}
AXLS_read_book関数を使い、ブックオブジェクトを生成します。
オブジェクトの実体は、DLL/共有ライブラリ内に確保された、X-TRAiN用構造体の
アドレスを16進数に変換した文字列です。
以降の関数呼び出し時には、この値を使用します。
エラー時は戻り値としてNULLが返却されますが、これはメモリ確保ができなかった場合のみです。
読み込みエラーの判定は、AXLS_error_code関数でエラーコードを、
AXLS_error_mesg関数でエラーメッセージを取得して行います。
異常終了する場合は、AXLS_scrap_book関数でメモリの解放を行ってください。
セル値の読み込み
/* シート数繰り返し */
for ($sheet=0; $sheet<AXLS_sheet_num($book); $sheet++){
AXLS_open_sheet2($book, $sheet);
$sheet_name = AXLS_sheet_name($book, $sheet);
echo "(" . $sheet_name . ")\n";
/* 行数繰り返し */
for ($row=0; $row<AXLS_row_num($book); $row++){
echo "[行". $row . "]";
/* カラム数繰り返し */
for ($clm=0; $clm<AXLS_column_num($book, $row); $clm++){
/* カラム値出力 */
$cell = AXLS_cell_name($row+1, $clm+1);
$value = AXLS_get_cell($book, $cell);
echo $value . " ";
}
echo "\n";
$record_ct++;
}
}
AXLS_sheet_num関数は、シート数を返します。
AXLS_open_sheet2関数は、シートインデックス(連番)に対応したシートにカレントシートを切り替えます。
AXLS_sheet_name関数は、カレントシート名を返します。
AXLS_row_num関数は、カレントシートの行数を返します。
AXLS_column_name関数は、カレントブック内の引数で指定された行のカラム数を返します。
AXLS_get_cell関数は、カレントブック内の引数で指定されたセルの値を文字列として返します。
ブックオブジェクトの解放
/* Excelブック解放 */
$rtn= AXLS_scrap_book($book);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_save_book() rtn=", $rtn, " message=", $mesg, "\n";
die();
}
AXLS_scrap_book関数を使い、ブックオブジェクトのメモリ解放を行います。