从Perl程序解析特定excel文件时出现内存不足错误
运行perl代码时,程序会生成一些警告并终止。输出如下:从Perl程序解析特定excel文件时出现内存不足错误,perl,excel-2003,Perl,Excel 2003,运行perl代码时,程序会生成一些警告并终止。输出如下: D:\Perl\bin\search tool>perl testa.pl UTF-16 surrogate 0xdb79 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. UTF-16 surrogate 0xdbb1 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81
D:\Perl\bin\search tool>perl testa.pl
UTF-16 surrogate 0xdb79 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81.
UTF-16 surrogate 0xdbb1 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81.
UTF-16 surrogate 0xd83e at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81.
UTF-16 surrogate 0xdff8 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81.
UTF-16 surrogate 0xdbff at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81.
UTF-16 surrogate 0xdd98 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81.
substr outside of string at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196.
Use of uninitialized value in unpack at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196.
substr outside of string at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196.
Use of uninitialized value in unpack at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196.
Out of memory!
系统信息如下:
Perl版本:5.010000
操作系统名称:MSWin32
模块版本:(并非所有都是必需的)
电子表格::解析Excel 0.49
标量::Util 1.19
Unicode::Map(未安装)
电子表格::WriteExcel(未安装)
Parse::RecDescent(未安装)
文件::Temp 0.18
OLE::Storage_Lite 0.18
IO::Stringy 2.110
perl代码如下所示:
use strict;
use Spreadsheet::ParseExcel;
my $parser = Spreadsheet::ParseExcel->new(
CellHandler => \&cell_handler,
NotSetCell => 1
);
my $workbook = $parser->Parse('testfile.xls');
sub cell_handler {
my $workbook = $_[0];
my $sheet_index = $_[1];
my $row = $_[2];
my $col = $_[3];
my $cell = $_[4];
print $cell->unformatted(), "\n";
}
我还有示例testfile.xls。这个问题在电子表格::ParseExcel Google组中得到了回答 问题是特定的文件是加密的
John.这个问题在电子表格::ParseExcel Google组中得到了回答 问题是特定的文件是加密的
John。如何以编程方式检测这些类型的文件?你应该在单独的问题中提问。如何以编程方式检测这些类型的文件?你应该在单独的问题中提问。