2017-10-20 117 views
0

我尝试在Excel工作表中插入公式=IF(D2="";"";COUNTIF(D:D;D2))。 这里是我想要的代码:如何在单元格中使用perl写入公式WIN32 :: OLE

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

我也用{Value}代替{Formula}没有成功尝试! 我犯了什么错误

+1

的[Perl的命令列表来操作Windows版Excel的Win32 :: OLE模块]可能的复制(https://stackoverflow.com/questions/27613878/list-of-perl-commands-to-manipulate- windows-excel-with-win32ole-module) – xxfelixxx

+0

看看这里:https://stackoverflow.com/questions/27613878/list-of-perl-commands-to-manipulate-windows-excel-with-win32ole-module – xxfelixxx

+0

是的,可以,当然,我也看到并阅读了这一点。 所以我使用'{Formula}'的方法是正确的,但是最后我的单元格是空的,我没有看到类似语法错误的错误! –

回答

0

这以下适用于我。代码由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)"; 
+0

好吧,但是这并不遵循给定的内容:或者使用带'A1'的'Formula' ...'An'表示法或者使用'FormulaR1C1'与单元格的相对位置 –

+0

我尝试了$ Sheet-> Range(“D3 “) - > {Formula} ='= IF(D2 =”“;”“; COUNTIF(D:D; D2))'; - 似乎工作 – jira

+0

如果我使用单元格而不是范围我得到一个异常。 – jira

相关问题