Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中读取cell nt公式的内容_Perl_Parseexcel - Fatal编程技术网

如何在perl中读取cell nt公式的内容

如何在perl中读取cell nt公式的内容,perl,parseexcel,Perl,Parseexcel,我有以下perl代码,打开excel文件并读取行:列,我想得到的是单元格的内容而不是公式,get_单元格(0,1)和(1,1)和(2,1)有一些公式和值,我对公式不感兴趣,只对单元格的内容或通过公式返回的值感兴趣,如果row:1:0是200,那么我需要读取200,而不是单元格后面的公式!能不能请几个好的人给我回电提前谢谢 some code above use Spreadsheet::ParseExcel $workbook = $par

我有以下perl代码,打开excel文件并读取行:列,我想得到的是单元格的内容而不是公式,get_单元格(0,1)和(1,1)和(2,1)有一些公式和值,我对公式不感兴趣,只对单元格的内容或通过公式返回的值感兴趣,如果row:1:0是200,那么我需要读取200,而不是单元格后面的公式!能不能请几个好的人给我回电提前谢谢

            some code above
            use Spreadsheet::ParseExcel
    $workbook = $parser->parse("$dir/$file");
    $worksheet = $workbook->worksheet('Sheet1');

    $total = $worksheet->get_cell(0,1);
    $pass  = $worksheet->get_cell(1,1);
    $fail  = $worksheet->get_cell(2,1);

    # Print the cell value when not blank
    $total = $total->value();
    $pass = $pass->value();
            $fail = $fail->value();
value()
方法根据需要返回公式的结果,而不是公式本身。我刚刚在单元格中用一个简单的
=1+1
公式对其进行了测试,
value()
返回
2

如果您正在读取的Excel文件以前是由
电子表格::WriteExcel
创建的,则存在一个问题:除非用户在创建文件时指定了值,否则此模块无法从使用电子表格::WriteExcel创建的文件中读取公式的值(通常情况并非如此)。原因是电子表格::WriteExcel写入公式,但不写入公式结果,因为它无法在不访问Excel公式引擎的情况下计算任意Excel公式。

value()方法按需要返回公式的结果,而不是公式本身。我刚刚在单元格中用一个简单的
=1+1
公式对其进行了测试,
value()
返回
2

如果您正在读取的Excel文件以前是由
电子表格::WriteExcel
创建的,则存在一个问题:除非用户在创建文件时指定了值,否则此模块无法从使用电子表格::WriteExcel创建的文件中读取公式的值(通常情况并非如此)。原因是电子表格::WriteExcel写入公式,但不写入公式结果,因为它无法在不访问Excel公式引擎的情况下计算任意Excel公式。

我使用

      use Spreadsheet::XLSX;
      my $excel = Spreadsheet::XLSX->new("$filename");
      my ($sheet) = @{ $excel->{Worksheet} };
      print $sheet->{Cells}[0][1]{Val}, "\n";
我发现它是用

      use Spreadsheet::XLSX;
      my $excel = Spreadsheet::XLSX->new("$filename");
      my ($sheet) = @{ $excel->{Worksheet} };
      print $sheet->{Cells}[0][1]{Val}, "\n";

谢谢@psxls。。我想我的问题是有些文件是xlsx,它可以在扩展名为“xls”但不是“xlsx”的文件上工作,我如何读取“xlsx”文件,知道吗?.thanksThanks@psxls。。我想我的问题是有些文件是xlsx,它在扩展名为“xls”但不是“xlsx”的文件上工作,我如何读取“xlsx”文件,有什么想法吗?谢谢