使用perl读取excel文件

我很久没接触excel文件了,因为工作一直在linux下,基本用不到windows的东东。

最近需要读取一份excel文件,把每列的数据解析出来,单独放到一个文本文件里,文件名就是列的名字。

在metacpan.org上有蛮多解析excel的模块,我挨个试了下,发现就这个模块最好用:Spreadsheet::Read,它接口清晰,没那么复杂。

基于该模块,读取excel文件,并将每列提取出来,单独放到一个以列名命名的文本文件里。脚本内容如下:

use strict;
use Spreadsheet::Read;
use Data::Dumper;

binmode(STDOUT, “encoding(UTF-8)”);

my $book = Spreadsheet::Read->new(“20201229.xls”);
my $sheet = $book->sheet(1);
my $max_col = $sheet->maxcol;

for (1..$max_col) {
my @col = $sheet->column($_);
my $title = shift @col;
$title =~ s/\///g;
open HDW,”>”, “columns/$title.txt” or die $!;
binmode(HDW, “encoding(UTF-8)”);
print HDW $_,”\n” for @col;
close HDW;
}

它的含义很容易理解。

Spreadsheet::Read->new,这里读取excel表格文件。

$book->sheet(1),这里选取第一张工作簿。

$sheet->maxcol,这里得到最大列数。

然后进入一个循环,从第一列开始读,到最大列数终止。

$sheet->column($_),这里读取当前列的内容,返回的是一个数组。

my $title = shift @col,将上述数组的第一个元素弹出来,作为文本文件的名字。

$title =~ s/\///g,这里用了一个正则表达式,将文件名里的斜杠去掉。

接着,将剩下的数组内容,写入文本文件,从而实现每列的内容产生一个文件。

这个工作就完成了,可见perl读取excel还是简单好用的。

Print this entry