Perl操作Excel问题

环境准备,安装必要模块

下载安装

  • 1、打开metacpan网站搜索
Perl操作Excel问题_第1张图片
搜索.png
  • 2、进入网页点击下载按钮
    这同时也是官方文档,英语水平有限用了google翻译。在linux下用wget下载即可


    Perl操作Excel问题_第2张图片
    下载.png
  • 3、解压缩
    解压很简单,使用tar -xzf 压缩文件名 -C 解压路径

  • 4、安装
    最主要的步骤应该就是安装了,进入解压文件夹下执行命令

perl Makefile.PL   #默认安装到perl的根目录,自定义路径使用命令: perl Makefile.PL PREFIX=路径 
make install       #开始安装

最后调用路径就是:路径/share/perl5

解决依赖

解决方法很简单,调用下Excel::Writer::XLSX,发现有未找到的模块就再到metacpan网站上搜索安装,重复直到解决,还好貌似重复一遍就可以了
这样创建和写Excel的环境就解决了。

参考官方文档用代码写Excel文件

基本操作

my $workbook = Excel::Writer::XLSX->new( '文件路径' );                   #创建excel文件
$worksheet = $workbook->add_worksheet('sheet名,可空');                   #创建sheet
$worksheet->write( 行, 列, 内容);                                        #在某行某列写入xxxx

以上的这几条命令就可以完成最基本的写操作了,感觉真的是超级简单。

高级点的

  • 1、设置格式
$format = $workbook->add_format();  
#粗体
$format->set_bold();
#红色
$format->set_color( 'red' ); 
#居中
$format->set_align( 'center' );
#设置单元格格式
$worksheet->write( $row, $col, 'Hi Excel!', $format );
  • 2、添加图表
#type     (必要) 
#subtype  (可选) 
#name     (可选) 
#embedded (可选) 
my $chart = $workbook->add_chart( type => 'column' );
#对$chart设置各种数据,属性之后插入图表
$worksheet->insert_chart( 'E2', $chart );

参考官方文档读Excel文件

环境配置省略,在metacpan搜索Spreadsheet::ParseExcel即可。

官方最简单例子

#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::ParseExcel;

#加载解析器
my $parser   = Spreadsheet::ParseExcel->new();
#读入文件,填入路径
my $workbook = $parser->parse('test.xls'); 
#防止出错
if ( !defined $workbook ) {
    die $parser->error(), ".\n";
}
#遍历sheet
for my $worksheet ( $workbook->worksheets() ) {
    #获取起始行
    my ( $row_min, $row_max ) = $worksheet->row_range();
   #获取起始列 
   my ( $col_min, $col_max ) = $worksheet->col_range();
   #遍历
    for my $row ( $row_min .. $row_max ) {
        for my $col ( $col_min .. $col_max ) {
 
            my $cell = $worksheet->get_cell( $row, $col );
            next unless $cell;
 
            print "Row, Col    = ($row, $col)\n";
            print "Value       = ", $cell->value(),       "\n";
            print "Unformatted = ", $cell->unformatted(), "\n";
            print "\n";
        }
    }
}

简单说明下,这段代码就是遍历了整个Excel表,然后将所有的结果进行了输出。一般这个代码就能满足要求了,将excel读入在做逻辑处理。

你可能感兴趣的:(Perl操作Excel问题)