テンプレート処理サンプルコード

#-------------------------------------------------------------------------------
# テンプレート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関数を使い、ブックの保存を行います。