2017-10-20 7 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

[펄의 목록에서 Win32 :: OLE 모듈과 윈도우 Excel을 조작하는 명령]의 사용 가능한 복제 (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' ...'표기법을 사용하거나 'FormulaR1C1'을 셀의 상대 위치와 함께 사용하시오 –

+0

$ Sheet-> Range ("D3 ") -> {수식} = 'IF (D2 =" ";" "; COUNTIF (D : D; D2))'; - 작동하는 것 같습니다 – jira

+0

범위 대신 셀을 사용하면 예외가 발생합니다. – jira