JAVA: экспорт данных (из базы данных) в Excel и отправка их на сторону клиента

Как следует из названия, мне нужно поместить некоторые данные (которые я получил из базы данных) в таблицу Excel, а затем отправить их на клиентскую сторону, чтобы пользователь мог сохранить, открыть или отменить действие.

Я видел несколько статей об этом, самая близкая из которых:Как я могу заставить пользователя загрузить мой файл? (Java, MVC, Excel, POI), Ссылаясь на ссылки, предоставленные Стивенсом, я опробовал следующий код:

public String execute(){
    setContentDisposition("attachment; filename=\"" + ename + "\"");
    try{
        ServletContext servletContext = ServletActionContext.getServletContext();
        String filePath = servletContext.getRealPath("/WEB-INF/template/excel/mytemplate.xls");
        File file = new File(filePath);
        Workbook wb = WorkbookFactory.create(new FileInputStream(file));
        Sheet sheet = wb.getSheetAt(0);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        wb.write(baos);
        InputStream excelStream;
        excelStream = new ByteArrayInputStream(baos.toByteArray());
    }catch(Exception e){
        System.out.println(e.getMessage());
    }
    return SUCCESS;
}

Здесь во-первыхWorkbookFactory не определен. Во-вторых, я не мог правильно понять, как работает код.

Я также нашел эту ссылку:http://www.roseindia.net/answers/viewqa/Java-Beginners/14930-How-to-export-data-from-database-to-excel-sheet-by-using-java--in-standalone-project .html, Но здесь файл Excel сохраняется на сервере. Я хочу, чтобы файл не сохранялся на стороне сервера, он должен идти напрямую на стороне клиента

(Если это помогает) Я использую: Struts 2 Framework, Hibernate

Я открыт для использования других вещей, таких как POI API, jQuery или любых других полезных вещей.

Я не могу использоватьdisplayTag по какой-то причине.

Javascript будет моим последним средством (хотя я и реализовал его), потому что он требует изменения некоторых настроек безопасности браузера по умолчанию (если этого можно избежать, я также открыт для javascript).

Посоветуйте, пожалуйста, как мне это сделать сейчас.

Спасибо!!

РЕДАКТИРОВАТЬ :

    <result-types>
        <result-type name="jsp" class="org.apache.struts2.views.jsp"/>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
        <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
    </result-types>
    <action name="myActionName" class="package.myActionClass">
         <result type="stream">
            <param name="contentType">"application/vnd.ms-excel"</param>
            <param name="inputName">excelStream</param>
            <param name="contentDisposition">contentDisposition</param>
            <param name="bufferSize">1024</param>
         </result>
    </action>

Ошибка при выполнении действия:

java.lang.reflect.InvocationTargetException

java.lang.IncompatibleClassChangeError: Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbook

Ответы на вопрос(2)

Ваш ответ на вопрос