ブック読み込みサンプルコード


#-------------------------------------------------------------------------------
# Excel Book読み込み
#-------------------------------------------------------------------------------
function read_book([String] $xls_path)
{
	$date = Get-Date -format 'yyyy/MM/dd HH:mm:ss:ff'
	$message = "処理開始 " + $date
	Write-Output $message

	#
	# Excelブックオープン
	#
	$book = AXLS_read_book $xls_path
	if ($book -eq ""){
		$message = "ERROR:AXLS_read_book()"

		Write-Output $message
		exit -1
	}
	$rtn = AXLS_error_code $book
	if ($rtn -ne 0){
		$message1 = "ERROR:AXLS_read_book() rtn=" + $rtn + " mesg="
		$message2 = AXLS_error_mesg $book 
		$message = $message1 + $message2

		Write-Output $message
		exit -1
	}

	#
	# シート数繰り返し
	#
	$sheet_num = AXLS_sheet_num $book

	for ($sheet=0; $sheet -lt $sheet_num; $sheet++){

		$rtn = AXLS_open_sheet2 $book $sheet
		if ($rtn -ne 0){
			$message1 = "ERROR:AXLS_open_sheet2() rtn=" + $rtn + " mesg="
			$message2 = AXLS_error_mesg $book
			$message = $message1 + $message2
			AXLS_scrap_book $book

			Write-Output $message
			exit -1
		}
		$sheet_name = AXLS_sheet_name $book $sheet

		#
		# 行数繰り返し
		#
		$row_num = AXLS_row_num $book
		$message = "シート=" + $sheet_name + " 行数=" + $row_num
		Write-Output $message

		for ($row=0; $row -lt $row_num; $row++){

			$column_num = AXLS_column_num $book $row

			#
			# カラム数繰り返し
			#
			$line = ""
			for ($column=0; $column -lt $column_num; $column++){

				#
				# 値出力
				#
				$row2 = $row + 1
				$clm2 = $column + 1
				$cell = AXLS_cell_name $book $row2 $clm2
				$value = AXLS_get_cell $book $cell
				$line = $line + $value + ","

			}
			$message = "[" + $row + "]" + $line
			Write-Output $message
		}
	}

	#
	# Excelブック解放
	#
	$rtn = AXLS_scrap_book $book

	$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_read_book $xls_path
	if ($book -eq ""){
		$message = "ERROR:AXLS_read_book()"

		Write-Output $message
		exit -1
	}
	$rtn = AXLS_error_code $book
	if ($rtn -ne 0){
		$message1 = "ERROR:AXLS_read_book() rtn=" + $rtn + " mesg="
		$message2 = AXLS_error_mesg $book 
		message = $message1 + $message2

		Write-Output $message
		exit -1
	}

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

	for ($sheet=0; $sheet -lt $sheet_num; $sheet++){

		$rtn = AXLS_open_sheet2 $book $sheet
		if ($rtn -ne 0){
			$message1 = "ERROR:AXLS_open_sheet2() rtn=" + $rtn + " mesg="
			$message2 = AXLS_error_mesg $book
			$message = $message1 + $message2
			AXLS_scrap_book $book

			Write-Output $message
			exit -1
		}
		$sheet_name = AXLS_sheet_name $book $sheet

		#
		# 行数繰り返し
		#
		$row_num = AXLS_row_num $book
		$message = "シート=" + $sheet_name + " 行数=" + $row_num
		Write-Output $message

		for ($row=0; $row -lt $row_num; $row++){

			$column_num = AXLS_column_num $book $row

			#
			# カラム数繰り返し
			#
			$line = ""
			for ($column=0; $column -lt $column_num; $column++){

				#
				# 値出力
				#
				$row2 = $row + 1
				$clm2 = $column + 1
				$cell = AXLS_cell_name $book $row2 $clm2
				$value = AXLS_get_cell $book $cell
				$line = $line + $value + ","

			}
			$message = "[" + $row + "]" + $line
			Write-Output $message
		}
	}


	
AXLS_sheet_num関数は、シート数を返します。
AXLS_open_sheet2関数は、シートインデックス(連番)に対応したシートにカレントシートを切り替えます。
AXLS_sheet_name関数は、カレントシート名を返します。
AXLS_row_num関数は、カレントシートの行数を返します。
AXLS_column_name関数は、カレントブック内の引数で指定された行のカラム数を返します。
AXLS_get_cell関数は、カレントブック内の引数で指定されたセルの値を文字列として返します。
ブックオブジェクトの解放
	#
	# Excelブック解放
	#
	$rtn = AXLS_scrap_book $book

	
AXLS_scrap_book関数を使い、ブックオブジェクトのメモリ解放を行います。