ブック作成サンプルコード
<?php
/* タイムゾーン設定 */
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_open_book();
if ($book == NULL){
echo "ERROR: AXLS_open_book()\n";
die();
}
/* ブック名指定 */
$argument = "BOOK=X-TRAiN.xlsx SHEET=SAMPLE";
$rtn = AXLS_put_values($book, $argument);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_put_values() rtn=", $rtn, " message=", $mesg, " argument=" . $argument . "\n";
AXLS_scrap_book($book);
die();
}
/* 列幅設定 */
$argument = "B.幅=20 C.幅=20 D.幅=20 E.幅=20";
$rtn = AXLS_put_values($book, $argument);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_put_values() rtn=", $rtn, " message=", $mesg, " argument=" . $argument . "\n";
AXLS_scrap_book($book);
die();
}
$now_date = date("Y/m/d");
$line_ct = 0;
$max_row = 1000;
/* 行数繰り返し */
for ($row=1; $row<=$max_row; $row++){
$cell1 = AXLS_cell_name($row, 1);
$cell2 = AXLS_cell_name($row, 2);
$cell3 = AXLS_cell_name($row, 3);
$cell4 = AXLS_cell_name($row, 4);
$cell5 = AXLS_cell_name($row, 5);
$line_ct++;
$argument = $cell1 . "=" . $row . " " . $cell2 . "=日本語文字列" . $row . " " . $cell2 . ".フォント.色=赤 " . $cell3 . "=" . $now_date . " " . $cell3 . ".書式=和暦 " . $cell4 . "=ABCDEFG " . $cell4 . ".フォント.名=\"Arial Black\" " . $cell5 . "=12345 " . $cell5 . ".書式=漢数字";
$rtn = AXLS_put_values($book, $argument);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_put_values() rtn=", $rtn, " message=", $mesg, " argument=" . $argument . "\n";
AXLS_scrap_book($book);
die();
}
/* 偶数行を塗りつぶす */
if ($line_ct % 2 == 0){
$range = AXLS_cell_range($row, 1, $row, 5);
$argument = $range . ".塗りつぶし.色=#CCCCCC";
$rtn = AXLS_put_values($book, $argument);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_put_values() rtn=", $rtn, " message=", $mesg, " argument=" . $argument . "\n";
AXLS_scrap_book($book);
die();
}
}
}
/* 表全体に罫線を付ける*/
$range = AXLS_cell_range(1, 1, $max_row, 5);
$argument = $range . ".罫線=実線";
$rtn = AXLS_put_values($book, $argument);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_put_values() rtn=", $rtn, " message=", $mesg, " argument=" . $argument . "\n";
AXLS_scrap_book($book);
die();
}
/* Excelブック保存 */
$rtn= AXLS_save_book($book);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_save_book() rtn=", $rtn, " message=", $mesg, "\n";
die();
}
/* 終了ログ出力 */
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ブックオープン */
$book = AXLS_open_book();
if ($book == NULL){
echo "ERROR: AXLS_open_book()\n";
die();
}
AXLS_open_book関数を使い、ブックオブジェクトを生成します。
オブジェクトの実体は、DLL/共有ライブラリ内に確保された、
X-TRAiN用構造体のアドレスを16進数に変換した文字列です。
以降の関数呼び出し時には、この値を使用します。
処理の終了時にはAXLS_save_book関数またはAXLS_scrap_book関数で
メモリを解放する必要があります。
メモリを確保せきなかった場合は戻り値としてNULLが返却されますので、
エラー処理ではX-TRAiNの関数(AXLS〜)を呼び出さないでください。
値/属性の設定
/* 列幅設定 */
$argument = "B.幅=20 C.幅=20 D.幅=20 E.幅=20";
$rtn = AXLS_put_values($book, $argument);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_put_values() rtn=", $rtn, " message=", $mesg, " argument=" . $argument . "\n";
AXLS_scrap_book($book);
die();
}
AXLS_put_values関数を使い、ブック名やシート名、セルの値、
各種書式の設定を行います。
設定はセル名=値 または 属性名=値 の様な文字列を羅列した形式で行います。
使用できる属性の詳細は、マニュアルを参照してください。
エラーが発生した場合は、戻り値として0以外が返却されます。
AXLS_error_mesg関数でエラーメッセージを取得することができます。
異常終了する場合は、AXLS_scrap_book関数でメモリの解放を行ってください。
ブックの保存
/* Excelブック保存 */
$rtn= AXLS_save_book($book);
if ($rtn != 0 ){
$mesg = AXLS_error_mesg($book);
echo "AXLS_save_book() rtn=", $rtn, " message=", $mesg, "\n";
die();
}
AXLS_save_book関数を使い、ブックの保存を行います。
ブック名を指定していない場合は、「Book1.xlsx」で保存しますが、
パスはPHPのディレクトリ下になってしまう事に注意してください。
保存が正常終了するとブックオブジェクトは解放されますので、以降は
X-TRAiNの関数(AXLS〜)を呼び出さないでください。