テンプレート処理サンプルコード
#-------------------------------------------------------------------------------
# テンプレートExcel Book更新
#-------------------------------------------------------------------------------
function template_book([String] $xls_path)
{
$date = Get-Date -format 'yyyy/MM/dd HH:mm:ss:ff'
$message = "処理開始 " + $date
Write-Output $message
# テンプレートExcelブックオープン
$book = AXLS_open_template $TEMPLATE_BOOK
if ($book -eq ""){
$message = "ERROR:AXLS_open_template()"
Write-Output $message
exit -1
}
$rtn = AXLS_error_code $book
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_open_template() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
Write-Output $message
exit -1
}
# ブック名設定
$arguments = "BOOK=" + $xls_path
$rtn = AXLS_put_values $book $arguments
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_put_value() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
AXLS_scrap_book $book
Write-Output $message
exit -1
}
# 更新内容キー入力
$arguments = Read-Host "更新内容"
$rtn = AXLS_put_values $book $arguments
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_put_value() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
AXLS_scrap_book $book
Write-Output $message
exit -1
}
# Excelブック保存
$rtn = AXLS_save_book $book
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_save_book() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
Write-Output $message
exit -1
}
$message = "Excelブック" + $xls_path + "を出力しました。"
Write-Output $message
$date = Get-Date -format 'yyyy/MM/dd HH:mm:ss:ff'
$message = "処理終了 " + $date
Write-Output $message
return
}
解説
テンプレートブックオブジェクトの作成
# テンプレートExcelブックオープン
$book = AXLS_open_template $TEMPLATE_BOOK
if ($book -eq ""){
$message = "ERROR:AXLS_open_template()"
Write-Output $message
exit -1
}
$rtn = AXLS_error_code $book
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_open_template() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
Write-Output $message
exit -1
}
AXLS_open_template関数を使い、テンプレートブックオブジェクトを生成します。
オブジェクトの実体は、DLL/共有ライブラリ内に確保された、
X-TRAiN用構造体のアドレスを16進数に変換した文字列です。
以降の関数呼び出し時には、この値を使用します。
エラー時は戻り値としてNULLが返却されますが、これはメモリ確保ができなかった場合のみです。
読み込みエラーの判定は、AXLS_error_code関数でエラーコードを、
AXLS_error_mesg関数でエラーメッセージを取得して行います。
異常終了する場合は、AXLS_scrap_book関数でメモリの解放を行ってください。
作成ブック名、更新対象シートの指定
# ブック名設定
$arguments = "BOOK=" + $xls_path
$rtn = AXLS_put_values $book $arguments
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_put_value() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
AXLS_scrap_book $book
Write-Output $message
exit -1
}
AXLS_put_values関数を使い、作成ブック名や更新対象シートのカレント化を行います。
セル値の更新
# 更新内容キー入力
$arguments = Read-Host "更新内容"
$rtn = AXLS_put_values $book $arguments
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_put_value() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
AXLS_scrap_book $book
Write-Output $message
exit -1
}
テンプレート処理では、セルの値のみを更新することができます。
罫線、セルの塗りつぶし、フォントの設定、書式の追加や変更を行うことはできません。
本サンプルは、標準入力(キーボード入力)より、A1=値 の形式でセルの値を
指定して更新する仕様です。
ブックの保存
# Excelブック保存
$rtn = AXLS_save_book $book
if ($rtn -ne 0){
$message1 = "ERROR:AXLS_save_book() rtn=" + $rtn + " mesg="
$message2 = AXLS_error_mesg $book
$message = $message1 + $message2
Write-Output $message
exit -1
}
AXLS_save_book関数を使い、ブックの保存を行います。