We use Apache POI in a limited way with App Engine. As long as you stay away from functions that want to use the local file system and I've heard you'll get errors if you try to use any of the graphics-related functions. We're just doing basic spreadsheet manipulation... opening existing excel files and using the as templates, populating the sheet with data and saving it for the user. It works great for us, and the object model in POI is a lot easier to use than JXL which we also got working on GAE but are moving away from in favor of POI.
The error you're getting is because POI is trying to create a temporary file on the file system... this functionality will not work on App Engine. What you'll need to do is use streaming. We store Excel files as 'templates' in Google Cloud Storage, then we read these as an input stream and create our POI worksheet from the template. Then we manipulate the worksheet with POI functions and save the new worksheet as a byte array output stream which we in turn write back to GCS.
creating the POI object:
InputStream is = new ByteArrayInputStream(ba);
Workbook workBook = new XSSFWorkbook(is);
saving the POI object:
workBook.write(byte_array_output_stream);
... then save the byte_array_output_stream to GCS