Dav*_*Kub 6 excel perl zip file-format
我有一个Perl脚本从Excel(xls)二进制文件中读取数据.但是向我们发送这些文件的客户端XLSX有时会开始向我们发送格式文件.我已经更新了脚本以便能够阅读这些内容.但是,客户端有时喜欢XLSX使用.xls扩展名来命名文件,因为它使用文件名来确定它的文件类型,因此目前会混淆我的脚本.
一个XLSX文件是一个包含XML的东西的zip文件.我的脚本是否有一种简单的方法来查看文件并判断它是否是zip文件?如果是这样,我可以让我的脚本而不仅仅是文件名.
Ala*_*avi 17
是的,可以通过检查幻数来实现.
Perl中有很多模块用于检查文件中的幻数.
使用File :: LibMagic的示例:
use strict;
use warnings;
use File::LibMagic;
my $lm = File::LibMagic->new();
if ( $lm->checktype_filename($filename) eq 'application/zip; charset=binary' ) {
# XLSX format
}
elsif ( $lm->checktype_filename($filename) eq 'application/vnd.ms-office; charset=binary' ) {
# XLS format
}
Run Code Online (Sandbox Code Playgroud)
另一个例子,使用File :: Type:
use strict;
use warnings;
use File::Type;
my $ft = File::Type->new();
if ( $ft->mime_type($file) eq 'application/zip' ) {
# XLSX format
}
else {
# probably XLS format
}
Run Code Online (Sandbox Code Playgroud)
编辑:Archive :: Zip是更好的
solution
# Read a Zip file
my $somezip = Archive::Zip->new();
unless ( $somezip->read( 'someZip.zip' ) == AZ_OK ) {
die 'read error';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |