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



#
# Python X-TRAiN extension demo
# (c) ARKTRAN,INC.
#
import sys
import datetime
import xtrain

t1 = datetime.datetime.today()
print('処理開始 ' + str(t1.month) + '月' + str(t1.day) + '日 ' + str(t1.hour) + ':' + str(t1.minute) + ':' + str(t1.second) + '.' + str(t1.microsecond))

book_path = 'PythonX-TRAiNサンプル'

#
# Excelブックオープン
#
book = xtrain.AXLS_open_book()
if not book:
	print('AXLS_open_book() ERROR')
	sys.exit()

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

rtn = xtrain.AXLS_put_values(book, argument)
if rtn != 0:
	error_code = xtrain.AXLS_error_code(book)
	error_mesg = xtrain.AXLS_error_mesg(book)
	print('AXLS_put_values() ERROR code=' + str(error_code) + ' message=' + error_mesg)
	xtrain.AXLS_scrap_book(book)
	sys.exit()

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

rtn = xtrain.AXLS_put_values(book, argument)
if rtn != 0:
	error_code = xtrain.AXLS_error_code(book)
	error_mesg = xtrain.AXLS_error_mesg(book)
	print('AXLS_put_values() ERROR code=' + str(error_code) + ' message=' + error_mesg)
	xtrain.AXLS_scrap_book(book)
	sys.exit()

now_date= str(t1.year) + '/' + str(t1.month) + '/' + str(t1.day)
line_ct = 0
max_row = 1000

#
# 行数繰り返し
#
for row in range(1,max_row):

	#
	# A〜E列に数値、文字、日付を設定
	#
	cell1 = xtrain.AXLS_cell_name(row, 1)
	cell2 = xtrain.AXLS_cell_name(row, 2)
	cell3 = xtrain.AXLS_cell_name(row, 3)
	cell4 = xtrain.AXLS_cell_name(row, 4)
	cell5 = xtrain.AXLS_cell_name(row, 5)
	line_ct = line_ct + 1

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

	rtn = xtrain.AXLS_put_values(book, argument)
	if rtn != 0:
		error_code = xtrain.AXLS_error_code(book)
		error_mesg = xtrain.AXLS_error_mesg(book)
		print('AXLS_put_values() ERROR code=' + str(error_code) + ' message=' + error_mesg)
		xtrain.AXLS_scrap_book(book)
		sys.exit()

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

		range = xtrain.AXLS_cell_range(row, 1, row, 5)
		argument = range + '.塗りつぶし.色=#CCCCCC'

		rtn = xtrain.AXLS_put_values(book, argument)
		if rtn != 0:
			error_code = xtrain.AXLS_error_code(book)
			error_mesg = xtrain.AXLS_error_mesg(book)
			print('AXLS_put_values() ERROR code=' + str(error_code) + ' message=' + error_mesg)
			xtrain.AXLS_scrap_book(book)
			sys.exit()
#
# 表全体に罫線を付ける
#
range = xtrain.AXLS_cell_range(1, 1, max_row, 5)
argument = range + ".罫線=実線";

rtn = xtrain.AXLS_put_values(book, argument)
if rtn != 0:
	error_code = xtrain.AXLS_error_code(book)
	error_mesg = xtrain.AXLS_error_mesg(book)
	print('AXLS_put_values() ERROR code=' + str(error_code) + ' message=' + error_mesg)
	xtrain.AXLS_scrap_book(book)
	sys.exit()

#
# Excelブック保存
#
rtn = xtrain.AXLS_save_book(book)
if rtn != 0:
	error_code = xtrain.AXLS_error_code(book)
	error_mesg = xtrain.AXLS_error_mesg(book)
	print('AXLS_save_book() ERROR code=' + str(error_code) + ' message=' + error_mesg)
	xtrain.AXLS_scrap_book(book)
	sys.exit()

print('Excelブック ' + book_path + ' 作成完了')
t1 = datetime.datetime.today()
print('処理終了 ' + str(t1.month) + '月' + str(t1.day) + '日 ' + str(t1.hour) + ':' + str(t1.minute) + ':' + str(t1.second) + '.' + str(t1.microsecond))


	


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

#
# Excelブックオープン
#
book = xtrain.AXLS_open_book()
if not book:
    print('AXLS_open_book() ERROR')
    sys.exit()
 

	
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 = xtrain.AXLS_put_values(book, argument)
if rtn != 0:
    error_code = xtrain.AXLS_error_code(book)
    error_mesg = xtrain.AXLS_error_mesg(book)
    print('AXLS_put_values() ERROR code=' + str(error_code) + ' message=' + error_mesg)
    xtrain.AXLS_scrap_book(book)
    sys.exit()
 
now_date= str(t1.year) + '/' + str(t1.month) + '/' + str(t1.day)
line_ct = 0
max_row = 1000
  

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

ブックの保存

#
# Excelブック保存
#
rtn = xtrain.AXLS_save_book(book)
if rtn != 0:
    error_code = xtrain.AXLS_error_code(book)
    error_mesg = xtrain.AXLS_error_mesg(book)
    print('AXLS_save_book() ERROR code=' + str(error_code) + ' message=' + error_mesg)
    xtrain.AXLS_scrap_book(book)
    sys.exit()
 
print('Excelブック ' + book_path + ' 作成完了')
t1 = datetime.datetime.today()
print('処理終了 ' + str(t1.month) + '月' + str(t1.day) + '日 ' + str(t1.hour) + ':' + str(t1.minute) + ':' + str(t1.second) + '.' + str(t1.microsecond))
 
  

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