(view_excel3.pl)
$ more view_excel3.pl #!/usr/bin/env perl use strict; use Encode; use Spreadsheet::ParseExcel; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->Parse($ARGV[0]); if(!defined $workbook){ die $parser->error(),".\n"; } for my $worksheet ($workbook->worksheets()) { my ($row_min,$row_max) = $worksheet->row_range(); my ($col_min,$col_max) = $worksheet->col_range(); my $sheet_name = encode('utf-8',$worksheet->get_name()); for my $row ($row_min..$row_max){ for my $col ($col_min..$col_max){ my $cell = $worksheet->get_cell($row,$col); if($cell){ print "<cell sheet:$sheet_name row=$row,col=$col>"; print encode('utf-8',$cell->value()); print "<\\cell>\n"; } } } }
実行してみる。
excelファイルは→www.tepco.co.jp/images/kanagawa.xls
$ ./view_excel3.pl kanagawa.xls | more追加・変更などの掲載情報は随時更新されますので 都度、ご確認くださいますようお願いいたします。<\cell> | <\cell> | <\cell> | 平成23年4月5日18時<\cell> | <\cell> | なお、異なるグループにまたがっている地域は、電 を供給する変電所が異なる場合があることから、いずれかのグループでの停電となります 。<\cell> | <\cell> | <\cell> | <\cell> | <\cell> | 都県<\cell> | 市区郡<\cell> | 大字通称<\cell> | グループ<\cell> | サブグループ<\cell> | 神奈川県<\cell> | 愛甲郡愛川町<\cell> | 春日台1丁目<\cell> | 4<\cell> | D<\cell> | 神奈川県<\cell> | 愛甲郡愛川町<\cell> | 春日台2丁目<\cell> | 4<\cell> | D<\cell> . . . | 神奈川県<\cell> | 横浜市南区<\cell> | 六ツ川4丁目<\cell> | 5<\cell> | D<\cell> |
kanagawa.xlsのE18のデータを"D"から"E"に書き換え、kanagawa2.xlsとして保存する。
プロセス置換
先日こんな機能があることを知りました。
http://news.mynavi.jp/column/zsh/012/index.html
http://d.hatena.ne.jp/kwg/20100108/p1
使ってみる。
$ diff <(./view_excel3.pl kanagawa.xls) <(./view_excel3.pl kanagawa2.xls) 90c90 < <cell sheet:神奈川県 row=17,col=4>D<\cell> --- > <cell sheet:神奈川県 row=17,col=4>E<\cell>