我Spreadsheet::ParseExcel
用来解析Excel电子表格文件,如下所示
my $FileName = "../excel.xls";
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($FileName);
并从像这样的单元格中读取值
$product = $worksheeto->get_cell( $row, 0 )->value();
问题是,例如,当有法文字符时à
,它会显示ò
为了确保我使用的解析没有错误
print unpack('H*', $product) . "\n";
因此,当我使用任何在线十六进制到字符串转换器时,都会得到à
。
我也试过了
use utf8;
binmode(STDOUT, ":utf8");
但à
我却得到了+á
有没有办法获取正确的字符?
尝试使用格式化程序来解析文件,例如Spreadsheet :: ParseExcel :: FmtUnicode:
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;
#use Spreadsheet::ParseExcel::FmtJapan;
my $FileName = '../excel.xls';
my $parser = Spreadsheet::ParseExcel->new();
my $formatter = Spreadsheet::ParseExcel::FmtUnicode->new();
my $workbook = $parser->parse($FileName,$formatter);
也尝试FmtJapan,因为文档中说:Spreadsheet :: ParseExcel :: FmtJapan格式程序也支持Unicode。如果您在使用默认格式化程序时遇到任何编码问题,请尝试使用该格式化程序。
*更新:我自己在带有希腊字符的xls文件中尝试了此操作,但它既不适用于FmtUnicode也不适用于FmtJapan。然后,我找到了这个perlmonks帖子,使用了提供的My::Excel::FmtUTF8
模块,并在使用来打印单元格的值时成功工作了$cell->value()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句