ブック作成サンプルコード


#
# Ruby X-TRAiN extension demo
# (c) ARKTRAN,INC.
#
	require 'date'
	require './ruby_xtrain'

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

	book_path = 'RubyXTRAiNサンプル'

	#
	# Excelブックオープン
	#
	book = AXLS_open_book()
	if book.empty? then
		printf("AXLS_open_book() ERROR\n");
		exit(-1);
	end

	#
	# ブック名指定
	#
	argument = "BOOK=" + book_path + ' SHEET=SAMPLE';

	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

	#
	# 列幅設定
	#
	argument = 'B.幅=20 C.幅=20 D.幅=20 E.幅=20'

	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

	now_date= Date.today;
	line_ct = 0;
	max_row = 1000;

	#
	# 行数繰り返し
	#
	for row in 1..max_row do

		#
		# A〜E列に数値、文字、日付を設定
		#
		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 = line_ct + 1;

		argument = cell1 + '=' + row.to_s + ' ' + cell2 + '=日本語文字列' + row.to_s + ' ' + cell2 + '.フォント.色=赤 ' + cell3 + '=' + now_date.to_s + ' ' + cell3 + '.書式=和暦 ' + cell4 + '=ABCDEFG ' + cell4 + '.フォント.名="Arial Black" ' + cell5 + '=12345 ' + cell5 + '.書式=漢数字'

		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

		#
		# 偶数行を塗りつぶす
		#
		if line_ct % 2 == 0 then

			range = AXLS_cell_range(row, 1, row, 5);
			argument = range + ".塗りつぶし.色=銀";

			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
		end
	end

	#
	# 表全体に罫線を付ける
	#
	range = AXLS_cell_range(1, 1, max_row, 5)
	argument = range + ".罫線=実線";

	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("Excelブック " + book_path + " 作成完了\n");
	printf("処理終了 %s\n", Time.now.instance_eval { '%s.%03d' % [strftime('%Y/%m/%d %H:%M:%S'), (usec / 1000.0).round] });
	

	


解説
ブックオブジェクトの作成

    #
    # Excelブックオープン
    #
    book = AXLS_open_book()
    if book.empty? then
        printf("AXLS_open_book() ERROR\n");
        exit(-1);
    end

	
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 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関数を使い、ブック名やシート名、セルの値、各種書式の設定を行います。
設定はセル名=値 または 属性名=値 の様な文字列を羅列した形式で行います。
使用できる属性の詳細は、マニュアルを参照してください。
エラーが発生した場合は、戻り値として0以外が返却されます。
AXLS_error_mesg関数でエラーコードを、AXLS_error_mesg関数でエラーメッセージを取得することができます。
異常終了する場合は、AXLS_scrap_book関数でメモリの解放を行ってください。

ブックの保存

    #
    # 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("Excelブック " + book_path + " 作成完了\n");
    printf("処理終了 %s\n", Time.now.instance_eval { '%s.%03d' % [strftime('%Y/%m/%d %H:%M:%S'), (usec / 1000.0).round] });

	
AXLS_save_book関数を使い、ブックの保存を行います。
ブック名を指定していない場合は、「Book1.xlsx」で保存しますが、パスはRubyの ディレクトリ下になってしまう事に注意してください。
保存が正常終了するとブックオブジェクトは解放されますので、以降は X-TRAiNの関数(AXLS〜)を呼び出さないでください。