使用 CPAN 中的 Spreadsheet::ParseExcel 模块读取 Excel 文件中的内容,当遇到中文乱码问题时,使用 Spreadsheet::ParseExcel::FmtUnicode 模块重新编码,当将中文赋值给变量时,用 Encode 模块经 GB2312 解码即可。
- use strict; use Spreadsheet: :ParseExcel; use Spreadsheet: :ParseExcel: :FmtUnicode;
- use Encode; my $oFmtC = Spreadsheet: :ParseExcel: :FmtUnicode - >new(Unicode_Map = >"CP936"); my $parser = Spreadsheet: :ParseExcel - >new(); my $workbook = $parser - >parse('test.xls', $oFmtC);
- 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();
- for (my $row = $row_min; $row <= $row_max; $row++) {
- for (my $col = $col_min; $col <= $col_max; $col++) { my $cell = $worksheet - >get_cell($row, $col); $a = $cell - >value(); $a = decode("gb2312", $a); #do something
- }
- }
- }
来源: http://www.bubuko.com/infodetail-1864971.html