It is still possible, with the following workaround.
[Public StreamData getFile() {
// 1. initialize the fileInputStream
// 2. get Liferay's ServletResponse
// 3. write the file into the outputStream
// 4. return null to this method
}][1]
for more detail sample code, please refer http://kianworknotes.blogspot.com/2013/03/primefaces-filedownload-in-liferay.html#more
if you are using POI to generate the excel. in step 3, just write the following
workbook.write(outputstream)