我希望能够在zip文件中解析excel。我已经能够解析zip文件以返回该压缩文件中的文件,如果正则表达式匹配显示excel文件,我想解析该文件。
这是解析zip文件以获取Excel电子表格名称的脚本...
#!/usr/bin/perl
use strict;
use warnings;
use Archive::Zip;
use Spreadsheet::ParseExcel;
my $zipFile = Archive::Zip->new();
my $xl_file = "";
#open zipfile
$zipFile->read( '/home/user/Desktop/test.zip' ) == 0 || die "cannot read zip file\n";
#find all files within zipfile
my @files = $zipFile->memberNames('/home/user/Desktop/test.zip');
foreach my $file (sort @files) {
#find all excel files
if($file =~ m/(.*xls)/){
$xl_file = $1;
print "excel file found.\n";
}
}
这是解析单元格中值的脚本。
#!/usr/bin/perl
use strict;
use warnings;
my $filename = "/home/user/worksheet.xls";
use Spreadsheet::ParseExcel;
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse("$filename");
if ( !defined $workbook ) {
die $parser->error(), ".\n";
}
open(FILE, '>', "parse.txt")||die "cannot open parse.txt!\n";
for my $worksheet ( $workbook->worksheets() ) {
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
my $s = $worksheet -> get_cell(2,2);
my $p = $worksheet-> get_cell(2,3);
print FILE $s->value()."\n";
print FILE $p->value()."\n";
}
close FILE;
如何将它们整合在一起?
答案 0 :(得分:1)
根据Archive::Zip
的文档,可以将压缩文件成员的内容作为字符串获取:
$xls_content = $zipFile->contents($file);
根据Spreadsheet::ParseExcel
的文档,通过传递字符串作为参考,可以解析包含Excel文件内容的字符串:
my $workbook = $parser->parse(\$xls_content);
所以你应该能够将两者结合起来。
另一种可能性是将zip文件成员解压缩到临时文件中。