Spreadsheet :: Read的问题

时间:2012-07-25 15:03:19

标签: perl spreadsheet

在我的应用程序中,我们使用Spreadsheet :: Read来读取excel并对行执行某些任务,最后将其添加到数据库中。

我们导入的文件是Excel文件(.XLSX)。这个excel文件实际上是一个词汇表,它支持不同的用户语言。

问题是,我正面临着这个过程,我们在一些行/列中有特殊的字符单元格,这些单元格没有被正确解码。

例如,如果我有SPANISH Excel FIle:


在EXCEL SHEET中 => 从日志中提取


Informacióndecuenta => Informaci \ n de cuenta

Páginadeconsolademanministracióndecurso => P \ n \ n gina de consola de administraci \ de curso

Informaci \ n \ n de cuenta将被添加到Db中,并且在获取时它会在UI中显示无关的字符。

我试过这个解决方案,但它没有用。这基本上是Hacking of Spreadsheet :: Read

use Text::Iconv;
package Spreadsheet::XLSX;

sub new {
    my $converter = Text::Iconv->new("ASCII","utf-8");
    return __PACKAGE__->SUPER::new(@_, $converter);
}

请告诉我有什么问题或更好的解决方案?

1 个答案:

答案 0 :(得分:2)

Spreadsheet :: Read将字符串作为以Latin1编码的八位字节返回。要制作Perl字符,请使用Encode模块。阅读introduction to the topic of encoding in Perl

use Encode qw(decode);
use Spreadsheet::Read qw(ReadData);
my $ref = ReadData 'spanish.xls';
my $characters = decode 'Latin-1', $ref->[1]{A1};