Skip to content
司马顿的博客
司马顿的博客

司马顿的博客

使用perl读取excel文件

Posted on 2021年1月4日2021年1月4日 By 司马顿

我很久没接触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

博客 技术

文章导航

Previous post
Next post

Archives

  • 2022 年 9 月 (2)
  • 2022 年 8 月 (2)
  • 2022 年 7 月 (2)
  • 2022 年 6 月 (1)
  • 2022 年 5 月 (4)
  • 2022 年 4 月 (18)
  • 2022 年 3 月 (13)
  • 2022 年 2 月 (6)
  • 2022 年 1 月 (8)
  • 2021 年 12 月 (14)
  • 2021 年 11 月 (7)
  • 2021 年 10 月 (19)
  • 2021 年 9 月 (25)
  • 2021 年 8 月 (45)
  • 2021 年 7 月 (33)
  • 2021 年 6 月 (10)
  • 2021 年 3 月 (2)
  • 2021 年 2 月 (8)
  • 2021 年 1 月 (8)
  • 2020 年 12 月 (20)
  • 2020 年 11 月 (11)
  • 2020 年 10 月 (14)
  • 2020 年 9 月 (33)
  • 2020 年 8 月 (17)
  • 2020 年 7 月 (21)
  • 2020 年 6 月 (20)
  • 2020 年 5 月 (10)
  • 2020 年 4 月 (17)
  • 2020 年 3 月 (18)
  • 2020 年 2 月 (11)
  • 2020 年 1 月 (7)
  • 2019 年 12 月 (13)
  • 2019 年 11 月 (14)
  • 2019 年 10 月 (8)
  • 2019 年 9 月 (9)
  • 2019 年 8 月 (13)
  • 2019 年 7 月 (12)
  • 2019 年 6 月 (20)
  • 2019 年 5 月 (18)
  • 2019 年 4 月 (18)
  • 2019 年 3 月 (11)
  • 2019 年 2 月 (12)
  • 2019 年 1 月 (15)
  • 2018 年 12 月 (15)
  • 2018 年 11 月 (13)
  • 2018 年 10 月 (13)
  • 2018 年 9 月 (21)
  • 2018 年 8 月 (29)
  • 2018 年 7 月 (23)
  • 2018 年 6 月 (21)
  • 2018 年 5 月 (5)

标签

AI (24) Apache Drill (11) 加拿大 (21) 宇宙与人生 (19) 情感 (281) 技术 (75) 抑郁症 (68) 新冠病毒 (13) 汽车 (30) 生活 (333) 职场 (25) 行业观点 (60) 读书文艺 (48)
©2025 司马顿的博客 | WordPress Theme by SuperbThemes