【问题标题】:HowTo write a formula in cell using perl WIN32::OLE如何使用 perl WIN32::OLE 在单元格中编写公式
【发布时间】:2017-10-21 17:10:51
【问题描述】:

我尝试在 Excel 工作表中插入公式 =IF(D2="";"";COUNTIF(D:D;D2))。 这是我正在尝试的代码:

$WorkSheet->Cells($Row2Use,'L')->{Formula} = "=IF(D".$Row2Use."=\"\",\"\",COUNTIF(D:D,D".$Row2Use.")"; # =IF(D2="";"";COUNTIF(D:D;D2))

我也尝试使用{Value} 而不是{Formula},但没有成功! 我做错了什么

【问题讨论】:

标签: excel perl formula win32ole


【解决方案1】:

以下内容对我有用。从 xxfelixxx 给出的链接中获取和修改的代码。

use Cwd 'abs_path';
use Win32::OLE;
use Win32::OLE qw(in with);
use Win32::OLE::Const "Microsoft Excel";
$Win32::OLE::Warn = 3;


my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');

$Excel->{Visible} = 1;

my $Book = $Excel->Workbooks->Add;
my $Sheet = $Book->Activesheet;

$Sheet->Range("A1")->{Value} = 1;
$Sheet->Range("A2")->{Value} = 1;
$Sheet->Range("A3")->{Formula} = "=SUMA(R[-2]C:R[-1]C)";

【讨论】:

  • 好的,但这不符合给出的内容:或使用 FormulaA1...An 符号或使用 FormulaR1C1 和单元格的相对位置
  • 我试过 $Sheet->Range("D3")->{Formula} = '=IF(D2="";"";COUNTIF(D:D;D2))'; - 似乎工作
  • 如果我使用 Cells 而不是 Range,我会遇到异常。
  • ...仔细阅读您的帖子,我意识到我错过了公式末尾的“)”。我希望在这里得到一个错误代码...
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 2017-10-17
  • 2022-06-13
  • 1970-01-01
  • 2011-07-25
相关资源
最近更新 更多