Excel 什么是读取XLSM文件的Perl模块?
我的代码对XLSX文件非常有效,但在XLSM输入文件中会中断 要求Excel 什么是读取XLSM文件的Perl模块?,excel,csv,perl,xlsm,Excel,Csv,Perl,Xlsm,我的代码对XLSX文件非常有效,但在XLSM输入文件中会中断 要求 读取Excel的整行而不是单元格值 我不想使用我的$parser=电子表格::ParseXLSX->new(); 我的$工作簿=$parser->parse($prvs\u excel\u文件); 因为它只解析单元格值 我已经有一段时间没有查看可用的内容了,但是电子表格::Reader::ExcelXML解决的问题之一是访问xlsm文件。这部分是因为潜在危险的宏可以存储在带有xlsm扩展的电子表格中。大多数其他软件包通过故意不允
我已经有一段时间没有查看可用的内容了,但是电子表格::Reader::ExcelXML解决的问题之一是访问xlsm文件。这部分是因为潜在危险的宏可以存储在带有xlsm扩展的电子表格中。大多数其他软件包通过故意不允许这种扩展来避免这种风险。电子表格::Reader::ExcelXML通过不提供通过接口访问宏二进制子文件的权限,避免了恶意宏的风险。虽然包装很旧,但在这一点上有些易碎。然而,听起来Håkon Hægland表示有兴趣帮助解决脆性问题,这是个好消息 要潜在地解决OP问题,请参见下面的代码:From
还要检查“fetchrow\u array”和“fetchrow\u hashref”方法
use strict;
use warnings;
use Data::Dumper;
use Spreadsheet::Reader::ExcelXML;
my $workbook = Spreadsheet::Reader::ExcelXML->new( #similar style to Spreadsheet::XLSX
file => 't/test_files/TestBook.xlsx',# in the test folder of this package
group_return_type => 'value',
);
if ( !$workbook->file_opened ) {
die $workbook->error(), ".\n";
}
my $worksheet = $workbook->worksheet( 'Sheet5' );
$worksheet->set_custom_formats( {
2 =>'yyyy-mm-dd',
} );
my $value;
while( !$value or $value ne 'EOF' ){
$value = $worksheet->fetchrow_arrayref;
print Dumper( $value );
}
###########################
# SYNOPSIS Output
# $VAR1 = [ 'Superbowl Audibles', 'Column Labels' ];
# $VAR1 = [ 'Row Labels', 2016-02-06', '2017-02-14', '2018-02-03', 'Grand Total' ];
# $VAR1 = [ 'Blue', '10', '7', '', '17' ];
# $VAR1 = [ 'Omaha', '', '', '2', '2' ];
# $VAR1 = [ 'Red', '30', '5', '3', '38' ];
# $VAR1 = [ 'Grand Total', '40', '12', '5', '57' ];
# $VAR1 = 'EOF';
###########################
你试过了吗?是的,我试过了。它不符合我的行读取“读取Excel的整行而不是单元格值”的要求。我正在研究它。目前,我甚至无法安装模块Spreadsheet::Reader::ExcelXML(由于测试失败)。另一个问题是,在cpan发挥神奇作用之前,必须从github安装该包。
use strict;
use warnings;
use Data::Dumper;
use Spreadsheet::Reader::ExcelXML;
my $workbook = Spreadsheet::Reader::ExcelXML->new( #similar style to Spreadsheet::XLSX
file => 't/test_files/TestBook.xlsx',# in the test folder of this package
group_return_type => 'value',
);
if ( !$workbook->file_opened ) {
die $workbook->error(), ".\n";
}
my $worksheet = $workbook->worksheet( 'Sheet5' );
$worksheet->set_custom_formats( {
2 =>'yyyy-mm-dd',
} );
my $value;
while( !$value or $value ne 'EOF' ){
$value = $worksheet->fetchrow_arrayref;
print Dumper( $value );
}
###########################
# SYNOPSIS Output
# $VAR1 = [ 'Superbowl Audibles', 'Column Labels' ];
# $VAR1 = [ 'Row Labels', 2016-02-06', '2017-02-14', '2018-02-03', 'Grand Total' ];
# $VAR1 = [ 'Blue', '10', '7', '', '17' ];
# $VAR1 = [ 'Omaha', '', '', '2', '2' ];
# $VAR1 = [ 'Red', '30', '5', '3', '38' ];
# $VAR1 = [ 'Grand Total', '40', '12', '5', '57' ];
# $VAR1 = 'EOF';
###########################