Thanks Mark - your point about 'Invalid Directory Paths' made me convert the relative paths that I had been using to absolute paths and for now that seems to have fixed it.
So for any relative php newbies I was using this to save:
$xlsPath = '../data/' . PRODUCT . '/' . $client . '/output/'.session_id().'/';
$objWriter->save($xlsPath.$xlsFilename);
now I'm using:
$xlsPath = $_SERVER['DOCUMENT_ROOT']."/QA/RIG/data/" . PRODUCT ."/". $client . '/output/'.session_id().'/';
$objWriter->save($xlsPath.$xlsFilename);
So far this seems to have worked, will post here again if the error re-occurs.