Excel::Writer::XLSX 在公式中添加了意外的 @

Jea*_*arc 3 excel perl formula xlsx writer

我正在使用 Excel::Writer::XLSX

use Excel::Writer::XLSX;
my $workbook  = Excel::Writer::XLSX->new( "test.xlsx" );
my $worksheet = $workbook->add_worksheet();
$worksheet->write( 'A1', "4");
$worksheet->write( 'A2', "=ERF.PRECISE(A1/SQRT(2))");
Run Code Online (Sandbox Code Playgroud)

但是当我打开 Excel 工作表时,我可以在单元格中看到

A2:
=@ERF.PRECISE(A1/SQRT(2))
Run Code Online (Sandbox Code Playgroud)

在什么地方@来的呢?

vin*_*k89 5

代替 -

$worksheet->write( 'A2', "=ERF.PRECISE(A1/SQRT(2))");
Run Code Online (Sandbox Code Playgroud)

使用以下方法:

$worksheet->write( 'A2', "=_xlfn.ERF.PRECISE(A1/SQRT(2))");
Run Code Online (Sandbox Code Playgroud)

查看Excel 2010 及更高版本的公式文档

完整脚本:

#!/usr/bin/perl

use strict;
use warnings;

use Excel::Writer::XLSX;

my $workbook  = Excel::Writer::XLSX->new( "test.xlsx" );
my $worksheet = $workbook->add_worksheet();

$worksheet->write( 'A1', "4");
$worksheet->write( 'A2', "=_xlfn.ERF.PRECISE(A1/SQRT(2))");

$workbook->close();
Run Code Online (Sandbox Code Playgroud)

输出: 测试.xlsx