首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

关于perl处置excel-中文编码

2012-12-22 
关于perl处理excel-中文编码上次写了处理excle的一个很简单的程序,但是是那个只适合对方英文和数字的很快,

关于perl处理excel-中文编码

上次写了处理excle的一个很简单的程序,但是是那个只适合对方英文和数字的很快,当碰到了中文后就会变的力不从心了了,所以我将程序进行了改动,使得可以识别中文.当我们在处理很多xls表的时候,特别是数据汇总,你要将所有的数据全部汇总在一起并且导成txt的格式,利于做其他的事情,这个时候就需要下列的程序了:

? 需要安装的模块:

?IO::stringy ;

?IO::scalar ;

?Spreadsheet::Read .

#!/usr/bin/perl
use File::Find;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;
my $oExcel = new Spreadsheet::ParseExcel;

open IN,'>>E:/wangli.txt'? or die "$!";? #将数据导到这个文件中,追加的形式

sub print_path?????? #创建子程序,用于抓取所以 为 .xls的文件名(绝对路径)
{
?my $file = $_;
?if ( $file =~ /\.xls$/ )
?{
? $lpath = $File::Find::name;
? push( @lpath, $lpath );

?}
}
find( \&print_path, "E:/" );?? #对指定的目录进行查询,比如 E盘
? foreach my $path (@lpath)? {

#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($path,$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 IN $oWkC->Value, "\t" if($oWkC);

? }
??? print? IN "\n"
}
}

}

close IN;

大致就是这样的,数据出来以后,数据的格式就是以制表符分割的txt 文件的了,哈哈,简单吧

?

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hendyyou/archive/2009/11/08/4787523.aspx

热点排行