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 @   WellMandala  阅读(897)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示