dyno2316 ロヒミフ perl VBA Excel 秀丸

Spreadsheet::ParseExcel

#-------------------------------------------------
# (定義元)スクリプトと同じフォルダ内の「kamoku.xls」
# (Excelの項目・・試験区分, 科目コード, 枚数)
#
# (格納先ハッシュ)
# $t_kmk{試験区分}{科目コード}=枚数
#-------------------------------------------------
my $format = new Spreadsheet::ParseExcel::FmtJapan->new(Code => 'sjis');
my $xlsfile = Cwd::getcwd().'\kamoku.xls';

my $sheet = new Spreadsheet::ParseExcel->Parse($xlsfile, $format)->{"Worksheet"}[0];

my $maxRow = $sheet->{"MaxRow"};
my $maxCol = $sheet->{"MaxCol"};

for(my $row=1; $row<=$maxRow; $row++) { # Excel 1行目は見出し行で対象外
  $wk_skbn = $sheet->{"Cells"}[$row][0]->Value;
  $wk_kmk = $sheet->{"Cells"}[$row][1]->Value;
  $wk_maisu = $sheet->{"Cells"}[$row][2]->Value;
  # $t_kmk{試験区分}{科目コード}{maisu}=枚数
  $t_kmk{$wk_skbn}{$wk_kmk} =$wk_maisu;}
}

# 科目テーブル $t_kmk{試験区分}{科目コード}=枚数
print " --- 科目テーブル \$t_kmk{試験区分}{科目コード}=枚数 \n";

foreach $key1_skbn (sort keys %t_kmk){
  foreach $key2_kmk ( sort keys %{$t_kmk{$key1_skbn}} ){
    print " $key1_skbn,$key2_kmk,$t_kmk{$key1_skbn}{$key2_kmk}枚\n";
  }
}