Perl 解析 Excel

项目涉及到要用perl解析excel。在网上搜了一下,又通过自己试验,简单的excel形式是可以通过的。

 

需要安装的cpan 包:

OLE::Storage_Lite Parse::RecDescent Spreadsheet::ParseExcel Spreadsheet::WriteExcel Unicode::Map

 

之后按照 Spreadsheet::ParseExcel的说明文档那个例子进行解析就基本可以了。

 

不过有个小问题是我的excel里如有中文,需要指定一下 Spreadsheet::ParseExcel::FmtUnicode 编码。

代码如下:

 

use strict; use warnings; use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::FmtUnicode; use Spreadsheet::ParseExcel::FmtDefault; my $parser = Spreadsheet::ParseExcel->new(); my $fmt = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map => 'gb2312'); my $workbook = $parser->Parse('Book1.xls', $fmt); for my $worksheet ( $workbook->worksheets() ) { my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, $col_max ) = $worksheet->col_range(); for my $row ( $row_min .. $row_max ) { for my $col ( $col_min .. $col_max ) { my $cell = $worksheet->get_cell( $row, $col ); print $cell->value(),"|"; ###print "Row, Col = ($row, $col)/n"; ###print "Value = ", $cell->value(), "/n"; ###print "Unformatted = ", $cell->unformatted(), "/n"; } print "/n"; } }

 

结果成功了。

 

注意: 作者说的很清楚: The Spreadsheet::ParseExcel module can be used to read information from Excel 95-2003 binary files.

所以要是2007的话, Spreadsheet::XLSX module instead.

你可能感兴趣的:(Excel,Module,perl,文档,spreadsheet)