Perl读取Excel中的数据

#!usr/bin/perl -W
 
use strict;
use Spreadsheet::ParseExcel;#PERL的Spreadsheet::ParseExcel模块支持Excel的读操作。
 
use utf8;
#引入utf8模块 脚本内的字符串使用utf8作为编码格式
binmode(STDOUT,":encoding(gbk)");
#标准输出使用gbk作为编码格式,也可以把gbk改为gb2312
binmode(STDIN,":encoding(gbk)");
#如果涉及到输入流,例如读文件,不加这条读中文文件会出现乱码
binmode(STDERR,":encoding(gbk)");
#如果异常错误中的字符串有中文,请加上STDERR,否则也会出现乱码
 
 
#创建一个parser对象
my $parser=Spreadsheet::ParseExcel->new();
#返回一个文件(IO_300.xls)句柄,通过该句柄可以实现对文件的操作
my $workbook=$parser->parse("IO.xls");
 
#defined:此函数作用不是判断某个变量是否已经定义,而是用来判断某个变量是否为空
#如果文件不为空  
if(!defined $workbook )
{
  die $parser->error(),".\n";
}
 
#遍历工作表
my $count=0;
for my $worksheet ($workbook->worksheets())
{
   #获取表名
   my $TableName = $worksheet->get_name();
   print " /////////////////////////////////////////////////////////////////$TableName////////////////////////////////////////////////////////////////\n";
   #得到工作表的行和列标范围
   my ($row_min,$row_max)=$worksheet->row_range();
   my ($col_min,$col_max)=$worksheet->col_range();
   print "($row_min,$row_max)\n";
   print "($col_min,$col_max)\n";
   #遍历行和列
   for my $row (1 .. $row_max) {
    
     for my $col (1 .. $col_max) {
        #根据行和列得到单元格
        my $cell=$worksheet->get_cell($row,$col);
        #除非单元格为空,否则继续执行下面的代码 next和c语言中的continue语句类似
        next unless $cell;
         #打印单元格的值
        print "Row, Col    = ($row, $col)\n";
        print "Value       = ", $cell->value(),       "\n";
        $count+=1;
     }
   }
}
print "总共执行的次数:$count";
<STDIN>;
 
 

 

posted @ 2021-01-29 14:32  WellMandala  阅读(864)  评论(0编辑  收藏  举报