ブック読み込みサンプルコード
#-------------------------------------------------------------------------------
# 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関数を使い、ブックオブジェクトのメモリ解放を行います。