- 论坛徽章:
- 0
|
自问自答
- #!/usr/bin/perl
- use strict;
- use Win32::OLE qw(in with);
- use Win32::OLE::Const 'Microsoft Excel';
- use Win32::OLE::Variant;
- use Win32::OLE::NLS qw(:LOCALE :DATE);
- $Win32::OLE::Warn = 3; # Die on Errors.
- # get already active Excel application or open new
- my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
- || Win32::OLE->new('Excel.Application', 'Quit');
- $Excel->{DisplayAlerts}=0;
- # open Excel file
- use Cwd;
- my $dir=getcwd;
- $dir=$dir."/test_excel.xls";
- #$dir = encode("euc-cn",$dir);
- my $Book = $Excel->Workbooks->Open($dir);
- my $Sheet = $Book->Worksheets(1);
- #找到最后一行 最后一列方法
- my $LastRow = $Sheet->UsedRange->Find({What=>"*",
- SearchDirection=>xlPrevious,
- SearchOrder=>xlByRows})->{Row};
-
- my $LastCol = $Sheet->UsedRange->Find({What=>"*",
- SearchDirection=>xlPrevious,
- SearchOrder=>xlByColumns})->{Column};
- # ::Warn = 2; throws the errors, but #
- # expects that the programmer deals #
- my $dt = Variant(VT_DATE, $Sheet->Range("a8")->{Value});
- print "$dt\n";
- print $dt->Date(DATE_LONGDATE), "\n";
- $Sheet->Range("a2")->{Value} = $dt->Date(DATE_LONGDATE);
- print $dt->Date("ddd',' MMM dd yy"), "\n";
- $Sheet->Range("a3")->{Value}= $dt->Date("ddd',' MMM dd yy");
- #Some Properties Take Variant ints or longs -
- #in this case the Zoom property MUST be set for the
- #FitToPages(Wide|Tall) to be acknowledged.
- my $vtfalse = Variant(VT_BOOL, 0);
- my $vtpages = Variant(VT_I4, 1);
- with ($Sheet->PageSetup,
- 'FitToPagesWide'=>$vtpages,
- 'FitToPagesTall'=>$vtpages,
- 'Zoom'=>$vtfalse,
- 'PrintGridlines'=>0,
- 'LeftHeader'=> "Using Perl and Excel",
- 'CenterHeader' => "My First Script",
- 'RightHeader' => "Test",
- 'LeftFooter' => "Done",
- 'CenterFooter' => $dt->Date("ddd',' MMM dd yy"),
- 'Orientation' => xlLandscape,
- 'RightFooter' => "",
- 'PrintHeadings'=>0,
- 'FirstPageNumber'=> xlAutomatic,
- 'PrintTitleRows' => "1:1");
- #$Book->Save();
- #$Book = $Excel->Workbooks->Close();
复制代码 |
|