用Perl 应用Win32::OLE操纵Excel文件

转载 2011年01月21日 16:06:00

因工作需要,要遇到很多Excel格式的文件需要处理,而Perl语言是我的最爱,只好去网络上搜索一下,搜到一篇《Perl通过WIN32 OLE来操作EXCEL》文章,(地址:http://www.dlog.cn/wangchi/diary/25001),以下是其他信息:

 

参考资料:
1、《Perl5编程核心技术》——杜经农(北京希望电子出版社)2000.11第一版
2、Microsoft Excel 开发人员参考,通过OLE来对EXCEL进行操作的一些说明,关于OLE相关支持,可在微软的 MSDN上找到,我的blog技术杂谈目录下也有对OLE的简介。
 
 PS:转载请保留以下信息
Author:smilelance    
Time:2006.05.23
 
再通过阅读CPAN上的文档,地址:http://search.cpan.org/~jdb/Win32-OLE-0.1709/lib/Win32/OLE.pm,再加上自己捣鼓捣鼓,终于成功了,呵呵。下面是源代码:
 
use strict;
use warnings;
use Win32::OLE;   #导入win32 OLE包
use File::Copy; #导入文件复制模块
my $dir = 'c://MyPerl//Excel//';  #在此目录下新建EXCEL文件

my $src_name = $dir."test1"."/.xls";
my $dst_name = $dir."test2"."/.xls";
my $nowstr;
#新建一个EXCEL应用对象,然后我们就可以对excel进行操作。
my $app_xls = Win32::OLE->new('Excel.Application', sub{$_[0]->Quit})
or die "Excel 初始化失败,你可能没有安装Excel!";
$app_xls->{DisplayAlerts} = 'False';    #关掉excel的提示,比如是否保存修改之类的
#新建一个空的Excel文件,然后保存
my $book = $app_xls->WorkBooks->Add; #新建一个工作簿
$book->SaveAs($dir."myxls/.xls") or die "Save failer."; #保存这个工作部文件
undef $book; #不用了就销毁这个变量的内容
copy($dir."myxls/.xls",$src_name);
copy($dir."myxls/.xls",$dst_name);
 
#打开一个EXCEL文件
my $src_book = $app_xls->WorkBooks->Open($src_name);
my $src_sheet = $src_book->Worksheets(1); #选中一工作表
$nowstr = $src_sheet->Cells(1,1)->{Value};  #取得一单元格中数据
print $nowstr; #本脚本中该变量的值为未定义 undef
$src_sheet->Cells(1,1)->{Value}="change";  #修改一单元格中数据
my $dst_book = $app_xls->WorkBooks->Open($dst_name);
my $dst_sheet = $dst_book->Worksheets(1); #选中一工作表

#从一个excel里复制一工作表到另一excel中
$src_book->Worksheets(1)->Copy($dst_book->Worksheets(1));
$dst_book->Worksheets(3)->Delete;#删除一工作表
$dst_book->Save;  #保存所做修改
$src_book->Save;
$app_xls->{DisplayAlerts} = 'True'; #恢复提示
#<STDIN>;
undef $src_book; #不用了就销毁这个变量的内容
undef $dst_book; #不用了就销毁这个变量的内容
undef $app_xls;  #关掉所打开的excel应用
 
 
最后,要谢谢JDB(Win32::OLE模块的作者)和smilelance同学,谢谢。

perl win32::ole 操作excel

#!usr/bin/perl use strict; use warnings; use Win32::OLE;   #导入win32 OLE包 #my $dir = 'D://myperl//w...
  • beishafengjiang
  • beishafengjiang
  • 2015年10月10日 14:12
  • 1687

Perl 利用Win32::OLE操作Excel 技巧和诀窍

我翻译这个教程的目的就是为了回答Perl利用Win32::OLE操作Excel的有关问题,这些问题会经常遇到,但是没有一个浅显易懂的教程。如果你懂Perl,又有点VBA的知识,那么这篇短小精悍的教程你...
  • zhajio
  • zhajio
  • 2013年06月03日 22:28
  • 1534

Perl通过WIN32 OLE来操作EXCEL

       最近要用Perl(通过Win32::OLE)来操作EXCEL,在网上没找到类似的内容,好不容易在一本书上找到点入门知识,再加上自己捣鼓了一通,总算有点眉目,在此做个备份,供大家和我一起参...
  • smilelance
  • smilelance
  • 2006年05月23日 14:02
  • 6921

使用Win32::OLE操作Excel——Excel对象模型

使用Win32::OLE模块操作Excel
  • will2ni
  • will2ni
  • 2011年01月21日 11:38
  • 5547

MTK 编译错误,perl 找不到 WIN32/OLE.pm

MTK代码编译时出现如下错误: Can't locate Win32/OLE.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/msys /usr /li...
  • caz28
  • caz28
  • 2015年08月17日 11:08
  • 1169

使用win32ole操作Excel-2

require 'win32ole' class Engines def time_now initialize @t =Time.now a = @t.to_s.sp...
  • Spark2008
  • Spark2008
  • 2011年11月15日 11:43
  • 2994

用OLE技术操纵Excel

---- C++Builder是Borland公司继Delphi之后又一成功的产品,她集VB、VC++ 及 Delphi 的优点于一体而深得C语言爱好者的青睐。由于多数操作者爱用 MicroSoft公...
  • miderph84
  • miderph84
  • 2009年03月18日 15:05
  • 803

用 Perl 读写 Excel 文件

http://bbs.chinaunix.net/viewthread.php?tid=64430 使用 ...
  • hdaerduo
  • hdaerduo
  • 2006年09月18日 17:49
  • 1823

以OLE方式读写EXCEL的C++类【转载】

◆C++中的【L"https://msdn.microsoft.com/library"】。 这个是C++标准规定的写法。详见以下链接: http://bbs.csdn.net/topics/3906...
  • u013600225
  • u013600225
  • 2016年03月20日 08:21
  • 1393

perl读写Excel

最近学习了使用perl制作一个Excel文件,使用Spreadsheet模块写Excel时只能新建一个Excel文件,不能直接修改已有文件。#!/usr/bin/perl -w use strict;...
  • qq_33239350
  • qq_33239350
  • 2016年06月27日 17:25
  • 2227
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Perl 应用Win32::OLE操纵Excel文件
举报原因:
原因补充:

(最多只允许输入30个字)