做了乙個簡單的處理excel檔案的perl程式,批量讀取其中的資料將其轉換csv檔案
**如下:
#!/usr/local/bin/perl
#########################################
#xlstocsv ver 0.2 ! #
#xls檔案轉換csv #
# #
#mail: #
#########################################
use strict;
use warnings;
use spreadsheet::parseexcel;
use spreadsheet::parseexcel::fmtunicode;
sub parse_excel else
return unless $filename||(ref($do_fuc) eq 'code');
my $excel = new spreadsheet::parseexcel;
my $code = "cp936"; #gb support
my $fmtgbk = spreadsheet::parseexcel::fmtunicode->new(unicode_map => $code); #gb support
my $book = $excel->parse($filename, $fmtgbk);
my($imaxrow,$imaxcol,@cols);
ewsfor: foreach my$worksheet (@}) ) ;
} else
erfor: for(my $ir = $worksheet->; $ir <= $imaxrow; $ir++) )
} else
$#cols = -1;
ecfor: for(my $ic = $worksheet->; $ic <= $imaxcol; $ic++) [$ir][$ic];
if($cell) else
}if( $do_fuc ) (@cols);
} else }}
}my (@xlsformats,$ttindex,$defindex);
sub readxlsformat($)
push @xlsformats, [$rs[0],@ri];
$ttindex = $#xlsformats if ($ttindex < 0)&&($rs[0] eq '#');
$defindex = $#xlsformats if ($defindex < 0)&&($rs[0] eq '*');
}close xfs;
$ttindex = $defindex if $ttindex < 0;
die "沒有格式標題!" if $ttindex < 0;
}sub cvtxlstocsv(@))$/\.csv/i;
open tocsv, ">$csvfile" or die "開啟檔案$csvfile失敗: $!";
parse_excel $xlsfile, sub ;
close tocsv;
}}sub writetocsv($@) 檔案失敗: $!";
print csvfile join(',',@[1..$#]),"\n";
foreach my$xlsfile(@_) if $xlsformats[$i][0] eq $xlsfile;
}$index = $defindex if $index < 0;
die "找不到對應xls檔案格式" if $index < 0;
my$ttl=0;
parse_excel $xlsfile, sub ;
my%xi = ();
my$i = 0;
foreach (@_) = $i if $_;
$i++;
}foreach $i(0..$#fi) if defined $xi;
}my$csvformat = "format csvfile=\n" . '@*,' x ($#fi+1);
$csvformat =~ s/,$/\n/;
foreach (@fi) else
}$csvformat =~ s/,$/\n\.\n/;
if($oldcsvfmt ne $csvformat) ;
$ttl++;
} else };}
close csvfile;
}my@extfs=();
my($fmtfl,$outfl)=("","");
if /^-o$/;
#選擇格式檔案
do if /^-f$/;
#幫助do if /^-\?/;
switch: ;
$argsta == 1 && do;
$argsta == 2 && do;}}
if($argsta < 0)
unless(@extfs)
}my @xlsfiles=sort glob join(' ',@extfs);
#刪除順序序列中的重複值
$prexls=$xlsfiles[$p2];
$p2++;
}} continue
$#xlsfiles=$p2-1;
}if($fmtfl) else else
}
Perl開啟讀取檔案
在perl中可以用open或者sysopen函式來開啟檔案進行操作,這兩個函式都需要通過乙個檔案控制代碼 即檔案指標 來對檔案進行讀寫定位等操作。下面以open函式為例 1 讀 open 檔案控制代碼,檔名 open 檔案控制代碼,檔名 前提檔案必須已經存在,否則會返回0,出錯資訊在 中。2 寫 o...
讀取Excel檔案
閒話一下excel中工作簿和工作表的區別 工作簿中包含有工作表。工作簿可以由一張或多張工作表組成,乙個工作簿就是乙個excel 檔案。好了,開始讀取 檔案吧。前提 首先,我們假設需要讀取的 檔案名字為test.xls,位於assets根目錄下。所需jar包 這裡為了能讀取到excel 檔案,我們要新...
Perl中對Excel的讀取處理
讀取excel中存放的使用者進行相關資訊匹配use spreadsheet parseexcel use encode my oexcel new spreadsheet parseexcel my obook oexcel parse filename my ir,owks,owkc my nnn...