关于使用Win32::OLE控制excel的问题!

关于使用Win32::OLE控制excel的问题!

关于使用Win32::OLE控制excel的问题!
我想使用Win32::OLE使几个excel文件合并为一个excel的几个sheet。以前只用过按行控制每个sheet。请指点,谢谢!
因为新建的每个EXCEL文件有3个sheets.
你说要"将excel文件合并为一个excel的几个sheet"

我觉得从整个EXCEL合并不大可能,
办法就是将原来的EXCEL文件中需要合并的sheet用"Copy"方法,
复制到新的EXCEL文件中
能否烦请楼上写出具体copy.
能否烦请楼上写出具体copy的语句?这一点实在是不了解,谢谢了
请稍等,我去调试一下.
我在WIN32系统下
代码如下,请参考,我在我电脑的目录"D:\myperl\win32ole"下,新建test1.xls和test2.xls
用这段代码可以将test1.xls中的sheet1复制到test2.xls中去作为sheet1,
基本功能实现,有待完善.
#!usr/bin/perl
use strict;
use warnings;
use Win32::OLE;

sub my_print($);

my $dir = 'D:\\myperl\\win32ole\\';
my $src_name = $dir."test1"."\.xls";
my $dst_name = $dir."test2"."\.xls";

my $nowstr;
#start excel application
my $app_xls = Win32::OLE->new('Excel.Application', sub{$_[0]->Quit})
or die"Can't install Excel01!";

my $src_book = $app_xls->WorkBooks->Open($src_name, 0, 'True'); #'True' is only for read
my $src_sheet = $src_book->Worksheets(1);
$nowstr = $src_sheet->Cells(1,'A')->{Value};
my_print($nowstr);

my $dst_book = $app_xls->WorkBooks->Open($dst_name);
my $dst_sheet = $dst_book->Worksheets(1);
$nowstr = $dst_sheet->Cells(1,'A')->{Value};
my_print($nowstr);
#$app_xls->DisplayAlerts = 'False';
#Worksheets("Sheet3").Delete

$src_book->Worksheets(1)->Copy($dst_book->Worksheets(1));

undef $src_book;
undef $dst_book;
undef $app_xls;
十分感谢楼上的兄弟,我先.
十分感谢楼上的兄弟,我先拿去琢磨一下!
不用客气
我有看了一下,因为每个EXCEL新建都有3个SHEET,
COPY过来就插入到他前面了,名字怪怪的
你可以用Delete方法先将那3个删掉:
将DisplayAlerts设置为'False'可关掉WINDOWS的提示,
Save方法可自动保存EXCEL.
大概如下:
$app_xls->{DisplayAlerts} = 'False'; #close the alert of excel
#$dst_book->Worksheets(1)->Delete; #删掉目标文件中的提示
$src_book->Worksheets(1)->Copy($dst_book->Worksheets('sheet1'));
$dst_book->Save;
$app_xls->{DisplayAlerts} = 'True';