perlを独学で勉強している者です。
perlスクリプトを実行して以下のことをやりたいです。
①抽出条件の記載されたエクセルファイルを読み込む
②データ.csvを読み込む
③抽出条件に記載された条件のデータを別のテキストファイルに出力し出力したテキストファイルを別フォルダに配置する
条件:部署が「役職」、性別が「男」、年齢が25歳以上
実装途中のperlスクリプトを以下に記載します。いろんなサイトを参考にしてデータの値を出力するところは実装できたのですが抽出条件ファイルの読み込みと判定してからのテキストファイルへの出力、出力されたテキストファイルの移動をどのように実装すればよいか分からず困っています。
perlが得意な方がいましたら、ヒントを教えていただきたいです。
perl
1スクリプト 2#!/usr/local/bin/perl -w 3use strict; 4 5#条件ファイルを読み込む処理未実装 6 7 my $ExcelFile = 'C:/(省略)/address.csv'; # 読み込みEXCELブックファイル 8 my $scalar; 9 my $ref_array; 10 11 my $data = &putExcel2Data($ExcelFile); 12 13 # データ表示 14 foreach $ref_array (@$data) { # $ref_arrayには各行データの配列のリファレンスが格納される 15 print "\n-----------------------------------------------\n"; 16 foreach $scalar (@$ref_array) { # @$ref_arrayは行データの配列で、$scalarにはセルデータが格納される 17 print $scalar, " "; 18 ここに条件判定とテキストファイル出力、フォルダへの移動処理を入れる? 19 } 20 } 21 22sub putExcel2Data{ 23 my ($FilePath) = @_; 24 25 use Win32::OLE; 26 # 指定タイプライブラリのコンスタントが参照可能 27 use Win32::OLE::Const 'Microsoft Excel'; 28 # エラー時に本処理を中止し、Perlがエラーメッセージを出力し、本プロセスが終了する 29 Win32::OLE->Option(Warn => 3); 30 31 # EXCEL使用可能かチェック 32 eval { 33 Win32::OLE->GetActiveObject('Excel.Application'); 34 }; 35 if ($@) { 36 die "Excelが入っていません。$@"; 37 } 38 39 # EXCELオブジェクト取得 40 my $Excel = Win32::OLE->GetActiveObject('Excel.Application') 41 || Win32::OLE->new('Excel.Application', 'Quit'); 42 my $Book = $Excel->Workbooks->Open($FilePath); 43 my $Sheet = $Book->Worksheets(1); 44 45 # 実行数を取得 46 my $RowsCount = $Sheet->Range("A65536")->End(xlUp)->{'Row'}; 47 # 実列数を取得 48 my $ColumnCount = $Sheet->Cells(1, 256)->End(xlToLeft)->{'Column'}; 49 # Cells方式からRange方式に変換 50 my $Range = $Sheet->Cells($RowsCount, $ColumnCount)->Address("RowAbsolute:=False, ColumnAbsolute:=False"); 51 $Range =~ s/$//g; 52 53 my $array = $Sheet->Range("A1:$Range")->{'Value'}; 54 $Book->Close; 55 $Excel->Quit(); 56 return $array; 57} 58
回答1件
あなたの回答
tips
プレビュー