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

	require 'date'
	require 'kconv'
	require './ruby_xtrain'

	printf("処理開始 %s\n", Time.now.instance_eval { '%s.%03d' % [strftime('%Y/%m/%d %H:%M:%S'), (usec / 1000.0).round] });

	template_path = 'Template.xlsx'
	output_path   = 'Ruby_SAMPLE.xlsx'

	#
	# テンプレートExcelブックオープン
	#
	book = AXLS_open_template(template_path);
	if book.empty? then
		printf("AXLS_open_template() ERROR\n");
		exit(-1);
	end
	rtn = AXLS_error_code(book);
	if rtn != 0 then
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_open_template() ERROR code=%d message=%s\n", rtn, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	#
	# ブック名指定
	#
	argument = "BOOK=" + output_path;

	rtn = AXLS_put_values(book, argument);
	if rtn != 0 then
		error_code = AXLS_error_code(book);
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_put_values() ERROR code=%d message=%s\n", error_code, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	#
	# キー入力内容でExcel更新
	#
	printf("更新内容(セル値のみ上書き可能)\n");
	printf("> ");
	keyin = gets.chop
	argument = keyin.toutf8

	rtn = AXLS_put_values(book, argument);
	if rtn != 0 then
		error_code = AXLS_error_code(book);
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_put_values() ERROR code=%d message=%s\n", error_code, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	#
	# Excelブック保存
	#
	rtn = AXLS_save_book(book);
	if rtn != 0 then
		error_code = AXLS_error_code(book);
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_save_book() ERROR code=%d message=%s\n", error_code, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end
	
	printf("処理終了 %s\n", Time.now.instance_eval { '%s.%03d' % [strftime('%Y/%m/%d %H:%M:%S'), (usec / 1000.0).round] });


	


解説
テンプレートブックオブジェクトの作成

	#
	# テンプレートExcelブックオープン
	#
	book = AXLS_open_template(template_path);
	if book.empty? then
		printf("AXLS_open_template() ERROR\n");
		exit(-1);
	end
	rtn = AXLS_error_code(book);
	if rtn != 0 then
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_open_template() ERROR code=%d message=%s\n", rtn, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	
AXLS_open_template関数を使い、テンプレートブックオブジェクトを生成します。
オブジェクトの実体は、DLL/共有ライブラリ内に確保された、X-TRAiN用構造体の アドレスを16進数に変換した文字列です。
以降の関数呼び出し時には、この値を使用します。
エラー時は戻り値としてNULLが返却されますが、これはメモリ確保ができなかった場合のみです。
読み込みエラーの判定は、AXLS_error_code関数でエラーコードを、 AXLS_error_mesg関数でエラーメッセージを取得して行います。
異常終了する場合は、AXLS_scrap_book関数でメモリの解放を行ってください。
作成ブック名、更新対象シートの指定

	#
	# ブック名指定
	#
	argument = "BOOK=" + output_path;

	rtn = AXLS_put_values(book, argument);
	if rtn != 0 then
		error_code = AXLS_error_code(book);
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_put_values() ERROR code=%d message=%s\n", error_code, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	
AXLS_put_values関数を使い、作成ブック名や更新対象シートのカレント化を行います。
セル値の更新

	#
	# キー入力内容でExcel更新
	#
	printf("更新内容(セル値のみ上書き可能)\n");
	printf("> ");
	keyin = gets.chop
	argument = keyin.toutf8

	rtn = AXLS_put_values(book, argument);
	if rtn != 0 then
		error_code = AXLS_error_code(book);
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_put_values() ERROR code=%d message=%s\n", error_code, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	
テンプレート処理では、セルの値のみを更新することができます。
罫線、セルの塗りつぶし、フォントの設定、書式の追加や変更を行うことはできません。
本サンプルは、標準入力(キーボード入力)より、A1=値 の形式でセルの値を 指定して更新する仕様です。
ブックの保存

	#
	# Excelブック保存
	#
	rtn = AXLS_save_book(book);
	if rtn != 0 then
		error_code = AXLS_error_code(book);
		error_mesg = AXLS_error_mesg(book);
		printf("AXLS_save_book() ERROR code=%d message=%s\n", error_code, error_mesg);
		AXLS_scrap_book(book);
		exit(-1);
	end

	
AXLS_save_book関数を使い、ブックの保存を行います。