use Win32::OLE qw(in with CP_UTF8); Win32::OLE->Option(CP => CP_UTF8); use Win32::OLE::Const 'Microsoft Excel'; use Win32::OLE::Variant; $Win32::OLE::Warn = 3; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); # get already active Excel $Excel->{'Visible'} = 1; my $Book = $Excel->Workbooks->Open('foo.xlsx'); my $Sheet = $Book->Worksheets(1); $Sheet->Range("B1:Q1")->Merge(); $Sheet->Range("B1:Q1")->{HorizontalAlignment} = 'xlCenter';