您的位置:首页 >> 操作系统 >> Linux >> 正文
Linux RSS
 

功能丰富的Perl:用Perl读写Excel文件

http://www.rdxx.com 03年09月04日 08:35 互连网 我要投稿

关键词: 功能 , Excel文件 , Perl , 文件 , Excel

  Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel
  在 2000 年,Takanori Kawai 和 John McNamara 编写出了 Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel 模块并将它们张贴在 CPAN 上,这两个模块使得在任何平台上从 Excel 文件抽取数据成为可能(尽管不容易)。
  
  正如我们在稍后将看到的,如果您正在使用 Windows,Win32::OLE 仍提供一个更简单、更可靠的解决方案,并且 Spreadsheet::WriteExcel 模块建议使用 Win32::OLE 来进行更强大的数据和工作表操纵。Win32::OLE 带有 ActiveState Perl 工具箱,可以用来通过 OLE 驱动许多其它 Windows 应用程序。请注意,要使用此模块,您仍需要在机器上安装和注册一个 Excel 引擎(通常随 Excel 本身安装)。
  
  需要解析 Excel 数据的应用程序数以千计,但是这里有几个示例:将 Excel 导出到 CSV、与存储在共享驱动器上的电子表格交互、将金融数据移至数据库以便形成报告以及在不提供任何其他格式的情况下分析数据。
  
  要演示这里给出的示例,必须在您的系统上安装 Perl 5.6.0。您的系统最好是最近(2000 年或以后)的主流 UNIX 安装(LinuxSolaris 和 BSD)。虽然这些示例在以前版本的 Perl 和 UNXI 以及其他操作系统中也可以使用,但是您应该考虑到您将面对那些它们无法作为练习发挥作用的情况。
  
  Windows 示例:解析
  本节仅适用于 Windows 机器。所有其它各节适用于 Linux。
  
  在进行之前,请安装 ActiveState Perl(这里使用版本 628)或 ActiveState Komodo IDE 以编辑和调试 Perl。Komodo 为家庭用户提供一个免费许可证,您大概在几分钟之内就可以得到它。(有关下载站点,请参阅本文后面的参考资料。)
  
  使用 ActiveState PPM 软件包管理器安装 Spreadsheet::ParseExcel 和 Spreadsheet::WriteExcel 模块是困难的。PPM 没有历史记录,难以设置选项,帮助会滚出屏幕并且缺省方式是忽略相关性而安装。您可以从命令行输入“ppm”然后发出以下命令来调用 PPM:
  
  清单 1:安装 Excel 模块的 PPM 命令
  
  ppm> install OLE::Storage_Lite
  ppm> install Spreadsheet::ParseExcel
  ppm> install Spreadsheet::WriteExcel
  
  在这种情况下,该模块的安装将失败,因为 IO::Scalar 还不可用,因此,您可能想放弃 PPM 问题的查找,而转向内置的 Win32::OLE 模块。然而,在您阅读本文时,ActiveState 可能已经发布了该问题的修正。
  
  有了 ActiveState 的 Win32::OLE,您可以使用下面所列的代码逐个单元地转储工作表:
  
  下载 win32excel.pl
  
  清单 2:win32excel.pl
  
  #!/usr/bin/perl -w
  
  use strict;
  use Win32::OLE qw(in with);
  use Win32::OLE::Const 'Microsoft Excel';
  
  $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'); 
  
  # open Excel file
  my $Book = $Excel->Workbooks->Open("c:/komodo projects/test.xls");
  
  # You can dynamically obtain the number of worksheets, rows, and columns
  # through the Excel OLE interface. Excel's Visual Basic Editor has more
  # information on the Excel OLE interface. Here we just use the first
  # worksheet, rows 1 through 4 and columns 1 through 3.
  
  # select worksheet number 1 (you can also select a worksheet by name)
  my $Sheet = $Book->Worksheets(1);

9 7 3 1 2 3 4 4 8 :


 
 
标签: 功能 , Excel文件 , Perl , 文件 , Excel 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站