• ベストアンサー

Spreadsheet::ParseExcelの空の行の値

Spreadsheet::ParseExcelを使っていてよくわからないところがあったので、ご教授お願いします。 Excelの空のセルを正規表現でマッチさせるにはどうすれば良いのでしょうか? ***************************** use strict; use utf8; my cell = $sheet->{"Cells"}[$row][$col]; my val = ""; if($cell){ $val = $cell->Value; } if($val =~ "???"){ print "空のセルです"; }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

パターンマッチにこだわるのなら "???" の部分は "^$" になるでしょう。 正規表現をネット検索すれば、代表的なパターンを見ることが出来ます。

noname#105753
質問者

お礼

ごめんなさい、自力で解決できました・・・。 if($b_val eq "")としたらOKでした、回答ありがとうございました。

noname#105753
質問者

補足

うーん、上手くいきません・・・。申し訳ありません。 ***************************** use strict; use utf8; for文でrow++、$row<=$MaxRowのループ my cell = $sheet->{"Cells"}[$row][$col]; ##A列の読み込み my b_cell = $sheet->{"Cells"}[$row][$col+1] ##B列の読み込み my val = ""; my b_val = ""; if($cell){ $val = $cell->Value; ##A列の$rowが読み込まれる } if($b_cell){ $b_val = $b_cell->Value; ##B列の$rowが読み込まれる } if($val =~ " "){ ##(""の中身は全角スペース) print "この分に関しては成功"; } elsif($val =~ "あ"){ print "この分に関しては成功"; } else{ if($b_val =~ " "){ ##(1)とする print "ここが失敗"; } else{ print "ここも失敗。(1)に当てはまるはずの値もすべてこちらに判断されてしまう"; } } ***************************** こういう感じなんです・・・。ちなむとFmtJapan使ってます。 出力された空のセルの$b_valが何もprintしなかったので、$b_val =~ ^$のほかに$b_val =~ ""というのも試してみましたが、それもダメでした。