【问题标题】:How to read data from xlsx in perlperl 如何从 xlsx 读取数据
【发布时间】:2019-02-16 06:33:56
【问题描述】:

需要一些好人帮助我阅读扩展名为“xlsx”的 excel 文件这是我的代码:

#!/usr/bin/perl -w

use warnings;
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::XLSX;
use Date::Format;

my $filename = "../test.xlsx";
#Parse excel file
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse("$filename");

#Get cell value from excel sheet1 row 1 column 2
my $worksheet = $workbook->worksheet('Sheet1');
my $cell = $worksheet->get_cell(0,1);

# Print the cell value when not blank
if ( defined $cell and $cell->value() ne "") {
    my $value = $cell->value();
    print "cell value is $value \n";
}

【问题讨论】:

标签: perl xlsx


【解决方案1】:

Spreadsheet::XLSX 与用于 .xlsx 文件的 Spreadsheet::ParseExcel 非常相似;你需要说:

my $parser = Spreadsheet::XLSX->new();

而不是使用 ParseExcel。

【讨论】:

【解决方案2】:

您还可以使用 CPAN 模块 Spreadsheet::ParseXLSX 来解析 xlsx 文件。

来自文档:

use Spreadsheet::ParseXLSX;

my $parser = Spreadsheet::ParseXLSX->new;
my $workbook = $parser->parse("file.xlsx");

请参阅Spreadsheet::ParseExcel 以获取更多文档。

【讨论】:

    【解决方案3】:

    假设您已安装 Spreadsheet::Read perl 模块,该模块可以确定用于读取文件的实际解析器模块,下面的代码片段读取并打印输入工作簿的第一个工作表的单元格。您可以检查 $workbook 对象以查看所有可配置的选项。该模块也可用于读取“csv”、“xls”等其他格式的文件。这是我发现有用的教程链接:

    http://search.cpan.org/~hmbrand/Spreadsheet-Read/Read.pm

    use Spreadsheet::Read;
    ############################################################################
    # function input  : file in xlsx format with absolute path 
    # function output : prints 1st worksheet content if exist
    ############################################################################
    sub print_xlsx_file{
    
        my $file_path = shift;
        my $workbook = ReadData($file_path,cells => 0 );
        if(defined $workbook->[0]{'error'}){
            print "Error occurred while processing $file_path:".
                  $workbook->[0]{'error'}."\n";
            exit(-1);
        }
        my $worksheet = $workbook->[1];
        my $max_rows = $worksheet->{'maxrow'};
        my $max_cols = $worksheet->{'maxcol'};
    
        for my $row_num (1..($max_rows))
        {
            for my $col_num (1..($max_cols)){
                print $worksheet->{'cell'}[$col_num][$row_num]."\n";
            }
        }
    }
    # call above function
    # print_xlsx_file("/home/chammu/mybook.xlsx");
    

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 2014-07-02
      • 1970-01-01
      • 2014-01-15
      • 2012-09-12
      相关资源
      最近更新 更多