关于《perl语言入门》第七章的一个问题,谢谢!

关于《perl语言入门》第七章的一个问题,谢谢!

感觉这本书翻译的真是不错,能让我这个对脚本一窍不通的人也能快速进步 :)
关于第七章的第五个习题:
4. [8]写一个程序,输出有一个字母大写,而非所有字母都大写的行。它能匹配Fred,而不匹配fred 和FRED 吗?

我已经写了一个程序,但是关于匹配部分,要怎么写呢?

use strict;
use warnings;

$ARGV[0] = "Summer.conf";
$ARGV[1] = "Testout.txt";

open(FIN,  '<', $ARGV[0]) or die "Cannot open $ARGV[0]: $!\n";
open(FOUT, '>', $ARGV[1]) or die "Cannot open $ARGV[1]: $!\n";

while (<FIN>)
{
        print FOUT "$_\n" if (/填些什么?/);
}       
   
close FOUT;
close FIN;

请指点,是不是要用到^ 补集?谢谢!
还有一个问题,我用如下代码打开了一个excel表格,然后读取了表格中的一些内容

#!usr/bin/perl -w

use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';

$Win32::OLE::Warn = 3;

my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');

$Excel->{DisplayAlerts}=0;

my $Book = $Excel->Workbooks->Open('c:\Test.xls');

my $Sheet = $Book->Worksheets('Sheet1');

my $value = $Sheet->Range("A1:C3")->value;
my @tmp = @$value;
for( my $i=0 ; $i < 3 ; $i++ ){
        for( my $j = 0 ; $j < 3 ; $j++ ){
               print"${$tmp[$i]}[$j]";   #这里按顺序打印出来的就是取到的单个单元格的值,你把它赋值给你用来做为输入的

变量就可以了~
                print "\t";
        }
        print "\n";
}

undef $Sheet;
undef $Book;
undef $Excel;

有一个问题是GetActiveObject Worksheets Range等方法的文档在哪里找啊,msdn上没找到,谢谢
ok worksheet  workbook 可以在msdn上查到
请问如何用perl来遍历一个excel文件,谢谢
1. 匹配.
如果是 if (/.../)那就是用正则式了, 可以写成/^[^A-Z]*[A-Z][^A-Z]*$/
另一个办法是 if (tr/A-Z// == 1) 统计大写字母个数为1

2. Win32::OLE
CPAN上能看到Excel相关的几个常用函数.
其他: Visual Basic editor help.


QUOTE:
原帖由 Lonki 于 2007-12-6 16:42 发表
1. 匹配.
如果是 if (/.../)那就是用正则式了, 可以写成/^[^A-Z]*[A-Z][^A-Z]*$/
另一个办法是 if (tr/A-Z// == 1) 统计大写字母个数为1

2. Win32::OLE
CPAN上能看到Excel相关的几个常用函数.
其他: Vis ...

谢谢lonki,我消化一下~~~
遍历Sheets用到的:
my $ws_count = $Book->Worksheets->{count};
my $ws_curr  = $Book->Worksheets($ws_count);

遍历单元格: 搜索下EntireColumn这个方法


QUOTE:
原帖由 Lonki 于 2007-12-6 17:05 发表
遍历Sheets用到的:
my $ws_count = $Book->Worksheets->{count};
my $ws_curr  = $Book->Worksheets($ws_count);

遍历单元格: 搜索下EntireColumn这个方法

谢谢,Worksheets->{count};这个可以用,是用来获取worksheet的数量,
然后怎么根据每个worksheet,得到row和column的数量呢?
我查了一下EntireColumn是IRange的一个方法,IRange和worksheet是什么关系呢?

还有新建一个excel里面默认有三个worksheet,每一个worksheet貌似都有不限数量的row和column,怎么得到有效的(即格子里有数据)的格子呢,谢谢!!