zoukankan      html  css  js  c++  java
  • Perl通过WIN32 OLE来操作EXCEL

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

    #!usr/bin/perl
    use strict;
    use warnings;
    use Win32::OLE;   #导入win32 OLE包

    my $dir = 'D://myperl//win32ole//';  #在此目录下新建两个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"Can't install Excel01!";
     
    #打开一个EXCEL文件,'True' 表示是只读
    my $src_book = $app_xls->WorkBooks->Open($src_name, 0, 'True');
    my $src_sheet = $src_book->Worksheets(1); #选中一工作表
    $nowstr = $src_sheet->Cells(1,'A')->{Value};  #取得一单元格中数据

    print($nowstr);
    $src_sheet->Cells(1,'A')->{Value}="change";  #修改一单元格中数据

    my $dst_book = $app_xls->WorkBooks->Open($dst_name);
    my $dst_sheet = $dst_book->Worksheets(1);
    $app_xls->{DisplayAlerts} = 'False';    #关掉excel的提示,比如是否保存修改之类的
    #$dst_book->Worksheets(1)->Delete; #删除一工作表

    #从一个excel里复制一工作表到另一excel中
    $src_book->Worksheets(1)->Copy($dst_book->Worksheets('sheet3')); 
    $dst_book->Save;  #保存所做修改
    $app_xls->{DisplayAlerts} = 'True'; #恢复提示

    undef $src_book;
    undef $dst_book;
    undef $app_xls;  #关掉所打开的excel应用
     
    参考资料:
    1、《Perl5编程核心技术》——杜经农 (北京希望电子出版社)2000.11第一版
    2、Microsoft Excel 开发人员参考,通过OLE来对EXCEL进行操作的一些说明,关于OLE相关支持,可在微软的 MSDN上找到,我的blog技术杂谈目录下也有对OLE的简介。
     
     PS:转载请保留以下信息
    Author:smilelance    
    Time:2006.05.23
     
  • 相关阅读:
    python奇技淫巧——max/min函数的用法
    mysql中InnoDB存储引擎的行锁和表锁
    supervisor进程管理工具
    Tornado源码分析 --- Cookie和XSRF机制
    Tornado源码分析 --- Redirect重定向
    Tornado源码分析 --- 静态文件处理模块
    Tornado源码分析 --- Etag实现
    Python环境管理--virtualenvwrapper
    记录
    由 '' in 'abc' return True 引发的思考----Python 成员测试操作
  • 原文地址:https://www.cnblogs.com/secbook/p/2655521.html
Copyright © 2011-2022 走看看