文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用Perl读取Excel&&中文显示乱码的解决

用Perl读取Excel&&中文显示乱码的解决

时间:2006-03-03  来源:xiaoquqi

由于客户提出的变态要求,要求用perl解析Excel,经过一天半的努力,完全解决了perl解析Excel单元格中的含中文显示为乱码的问题。 【特别注释】 1、测试在windows环境下测试成功,测试的excel版本为2000,2003。 unix下测试不成功,显示中文仍然为乱码。数字正常。 2、分别用以下方法分别解析3M和7M的Excel文件。 Windows环境下3M文件(1个Sheet4000行左右数据 20列左右)解析的时间为2分47秒,10M文件由于解析时间过长,中途停止。 Unix工作站上解析7M Excel文件。CPU符合高达98.5%,内存达到500M,运行了7分钟没有完成。 由此观察,这个模块在使用上还是要相当谨慎的。     需要用的模块: Spreadsheet::ParseExcel Unicode::Map IO-stringy OLE-Storage_Lite   其中IO-stringy,OLE-Storage_Lite为运行的必要包 Spreadsheet::ParseExcel是解析Excel的必要程序 Unicode::Map为完全支持中文的字符集转换包   完整源代码如下: #!/usr/bin/perl -w use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;
my $oExcel = new Spreadsheet::ParseExcel; die "You must provide a filename to $0 to be parsed as an Excel file" unless @ARGV;   #set for charactor my $oFmtC = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map=>"CP936");
my $oBook = $oExcel->Parse($ARGV[0],$oFmtC);
my($iR, $iC, $oWkS, $oWkC);
print "FILE  :", $oBook->{File} , "\n";
print "COUNT :", $oBook->{SheetCount} , "\n";
print "AUTHOR:", $oBook->{Author} , "\n"
 if defined $oBook->{Author};
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++)
{
 $oWkS = $oBook->{Worksheet}[$iSheet];
 print "--------- SHEET:", $oWkS->{Name}, "\n";
 for(my $iR = $oWkS->{MinRow} ;
     defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
     $iR++)
 {
  for(my $iC = $oWkS->{MinCol} ;
      defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
      $iC++)
  {
   $oWkC = $oWkS->{Cells}[$iR][$iC];
   print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
  }
 }
}
相关阅读 更多 +
排行榜 更多 +
泡龙大闯关安卓版

泡龙大闯关安卓版

冒险解谜 下载
割草派对安卓版

割草派对安卓版

飞行射击 下载
堡垒攻防战安卓版

堡垒攻防战安卓版

飞行射击 下载