如何使用perl解析excel2007

如何使用perl解析excel2007  

 

前两天研究了用Spreadsheet::ParseExcel 解析excel 。但这个模块只支持2003及一下的文件。

今天又继续研究了解析2007的方法。

首先安装包

  1. Archive::Zip --  1.30  
  2. Compress-Raw-Zlib-2.026  
Archive::Zip -- 1.30 Compress-Raw-Zlib-2.026

这两个依赖包安装完毕之后,就用到主要的包:Spreadsheet::XLSX

解析的时候,同样遇到中文的问题。这时需要用use Encode 实现从 utf8 -> gbk(gb2312) 的转换。

代码基本是抄官方文档的。 我的excel文件就一个sheet。

一共两行(第一行是title),每行三列;这样的正规文件没发现问题。

整个代码如下

  1. use strict;  
  2. use warnings;  
  3. use Spreadsheet::XLSX;  
  4. use Encode;  
  5. #my $converter = Text::Iconv -> new ("utf-8", "windows-1251");  
  6. #my $excel = Spreadsheet::XLSX -> new ('test.xlsx', $converter);  
  7. my $excel = Spreadsheet::XLSX -> new ('test.xlsx');  
  8. foreach my $sheet (@{$excel -> {Worksheet}}) {  
  9.         printf("Sheet: %s\n", $sheet->{Name});  
  10.         $sheet -> {MaxRow} ||= $sheet -> {MinRow};  
  11.         foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) {  
  12.                 $sheet -> {MaxCol} ||= $sheet -> {MinCol};  
  13.                 foreach my $col ($sheet -> {MinCol} ..  $sheet -> {MaxCol}) {  
  14.                         my $cell = $sheet -> {Cells} [$row] [$col];  
  15.                         if ($cell) {  
  16.                                 my $a = $cell->{Val};  
  17.                                 $a = encode("gbk", decode("utf8", $a));  
  18.                                 #printf("( %s , %s ) => %s\n", $row, $col, $a);  
  19.                                 printf("$a ");  
  20.                         }  
  21.                 }  
  22.                 print "\n"; ## one row over  
  23.         }  

  24. 本文转自:http://blog.csdn.net/Aylazhang/archive/2010/04/11/5471074.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值