(view_excel.pl)
#!/usr/bin/env perl use strict; 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 = $worksheet->get_name(); print "<sheet_$sheet_name>\n"; for my $row ($row_min..$row_max){ print "<line_$row>\t"; for my $col ($col_min..$col_max){ my $cell = $worksheet->get_cell($row,$col); if($cell){ print $cell->value(),"\t"; }else{ print "\t"; } } print "<\\line_$row>\n"; } print "<\\sheet_$sheet_name>\n\n"; }
実行してみる
excelファイルは→www.tepco.co.jp/images/kanagawa.xls
$ ./view_excel.pl ../Downloads/kanagawa.xls Wide character in print at ./view_excel.pl line 19.Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. 追加・変更などの掲載情報は随時更新されますので、都度、ご確認くださいますようお願いいたします。 平成23年4月5日18時 <\line_0> Wide character in print at ./view_excel.pl line 27. なお、異なるグループにまたがっている地域は、電気を供給する変電所が異なる場合があることから、いずれかのグループでの停電となります。 <\line_1> Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. 都県 市区郡 大字通称 グループ サブグループ <\line_2> Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. 神奈川県 愛甲郡愛川町 春日台1丁目 4 D <\line_3> Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. 神奈川県 愛甲郡愛川町 春日台2丁目 4 D <\line_4> Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. Wide character in print at ./view_excel.pl line 27. 神奈川県 愛甲郡愛川町 春日台3丁目 4 D <\line_5> ...
UTF-8フラグを外す処理を追加する
(view_excel2.pl)
#!/usr/bin/env perl use strict; use Spreadsheet::ParseExcel; use Encode; 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 = $worksheet->get_name(); $sheet_name = encode('utf-8',$sheet_name); print "<sheet_$sheet_name>\n"; for my $row ($row_min..$row_max){ print "<line_$row>\t"; for my $col ($col_min..$col_max){ my $cell = $worksheet->get_cell($row,$col); if($cell){ print encode('utf-8',$cell->value()),"\t"; }else{ print "\t"; } } print "<\\line_$row>\n"; } print "<\\sheet_$sheet_name>\n\n"; }
実行してみる
$ ./view_excel2.pl ../Downloads/kanagawa.xls追加・変更などの掲載情報は随時更新されますので、都度、ご確認くださいますようお願いいたします。 平成23年4月5日18時 <\line_0> なお、異なるグループにまたがっている地域は、電気を供給する変電所が異なる場合があることから、いずれかのグループでの停電となります。 <\line_1> 都県 市区郡 大字通称 グループ サブグループ <\line_2> 神奈川県 愛甲郡愛川町 春日台1丁目 4 D <\line_3> 神奈川県 愛甲郡愛川町 春日台2丁目 4 D <\line_4> 神奈川県 愛甲郡愛川町 春日台3丁目 4 D <\line_5> ... 神奈川県 横浜市南区 六ツ川1丁目 5 D <\line_2271> 神奈川県 横浜市南区 六ツ川2丁目 5 D <\line_2272> 神奈川県 横浜市南区 六ツ川3丁目 5 D <\line_2273> 神奈川県 横浜市南区 六ツ川4丁目 5 D <\line_2274> <\sheet_神奈川県>
参照したURL:
http://search.cpan.org/~jmcnamara/Spreadsheet-ParseExcel-0.57/lib/Spreadsheet/ParseExcel.pm
http://www.ksknet.net/perl/wide_character.html