一个perl操作excel的例子

本文提供了一个使用Perl脚本操作Microsoft Excel文件的示例。该脚本展示了如何创建、编辑和读取Excel工作簿中的数据,包括插入日期、迭代写入多行文本以及读取指定范围内的单元格值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
  • #!/usr/bin/perl   
  • use strict;   
  • use warnings;   
  •   
  •   
  • use Win32::OLE qw(in with);   
  • use Win32::OLE::Const 'Microsoft Excel';   
  • use Win32::OLE::NLS qw(:LOCALE :TIME);   
  • my $Excel = Win32::OLE->GetActiveObject('Excel.Application')   
  •         || Win32::OLE->new('Excel.Application''Quit');   
  •   
  • my$excelfile='E:\学习程序\perl\excelfile.xls';   
  •   
  • #关闭警告信息,例如保存等,不跳出确认窗口   
  • $Excel->{DisplayAlerts}=0;     
  •   
  • #创建一个workbook   
  • #my $Book=$Excel->Workbooks->Add();   
  • #   $Book->SaveAs($excelfile); # 增加一个workbook,然后保存   
  •   
  • #直接打开一个excel 若存在   
  • my$Book=$Excel->Workbooks->Open($excelfile);   
  •   
  • #创建一个worksheet对象   
  • my $Sheet = $Book->Worksheets("Sheet1");   
  • #   $Sheet->Activate();   
  • #   $Sheet->{Name} = "DidItInPerl";   
  •   
  • #插入数据   
  • my ($mday,$mon,$year) = (localtime(time))[3,4,5];   
  • $year += 1900;   
  • $mon += 1;   
  • my $str = $year."/".$mon."/".$mday;   
  •   
  • #Range  行方法   
  • $Sheet->Range("C1")->{Value}=$str;   
  • $Sheet->Range("D1")->{Value}="今天的日期";   
  •   
  • #迭代插入数据   
  • foreach my$x (1 ..50) {   
  •     my$range="A".$x;   
  •     $Sheet->Range($range)->{Value}="这是第$range行";   
  • }   
  •   
  •   
  • #循环访问sheet   
  • my $sheetcnt = $Book->Worksheets->Count();   
  • foreach (1..$sheetcnt){   
  •    print "\t" .$Book->Worksheets($_)->{Name} ."\n";   
  • }   
  •   
  • foreach my $Sheet(in $Book->{Worksheets}){   
  •    print "\t" .$Sheet->{Name} ."\n";   
  • }   
  •   
  •   
  • #找到最后一行 最后一列方法   
  • my $LastRow = $Sheet->UsedRange->Find({What=>"*",   
  •     SearchDirection=>xlPrevious,   
  •     SearchOrder=>xlByRows})->{Row};   
  •   
  • my $LastCol = $Sheet->UsedRange->Find({What=>"*",   
  •                   SearchDirection=>xlPrevious,   
  •                   SearchOrder=>xlByColumns})->{Column};   
  • print "最后一列:",$LastCol,"\n";   
  • print "最后一行:",$LastRow,"\n";   
  •   
  •   
  • #读取第一行到最后一行数据   
  • print "#" x80,"\n";   
  • print "读取A列第一行到最后一行数据\n";   
  • my$tmp;   
  • foreach my$last_data (1..$LastRow) {   
  •     $tmp=$Sheet->Range("A".$last_data)->{Value};   
  •     print "第$last_data行数据:",$tmp,"\n";   
  • }
  • #学习来源perlmonks.org   

    http://13angel.iteye.com/blog/602486

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值