Perl操作Excel问题

作者: 破冰前行 | 来源:发表于2017-03-01 16:11 被阅读94次

    环境准备,安装必要模块

    下载安装

    搜索.png
    • 2、进入网页点击下载按钮
      这同时也是官方文档,英语水平有限用了google翻译。在linux下用wget下载即可


      下载.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问题

        本文链接:https://www.haomeiwen.com/subject/ltefgttx.html