- #!/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
一个perl操作excel的例子
最新推荐文章于 2024-06-16 17:46:30 发布