JAVA: Exportando dados (do banco de dados) para o Excel e enviando-os para o lado do cliente

omo o título sugere, preciso colocar alguns dados (que obtive do banco de dados) em uma planilha do Excel e enviá-los ao lado do cliente para que o usuário possa salvar, abrir ou cancelar a açã

Vi alguns artigos sobre isso, sendo o mais próximo:Como posso fazer o usuário baixar meu arquivo? (Java, MVC, Excel, POI). Referindo-me aos links fornecidos por Stevens, experimentei o seguinte código:

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;
}

Aqui em primeiro lugarWorkbookFactory não está definido. Em segundo lugar, não consegui entender corretamente como o código está funcionand

Eu também encontrei este link: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. Mas aqui o arquivo do Excel é salvo no servidor. Quero que o arquivo não seja salvo no lado do servidor, ele deve ir diretamente para o lado do cliente

(Se ajudar) estou usando: estrutura struts 2, hibernar

Estou aberto a usar outras coisas, como POI API, jQuery ou qualquer outra coisa boa.

Não consigo usardisplayTag por algum motivo

Javascript seria meu último recurso (embora eu tenha implementado com ele), pois requer a alteração de algumas configurações de segurança padrão do navegador (se isso puder ser evitado, também estou aberto a javascript

Por favor, informe como devo fazer isso agor

Obrigado!

EDIT:

    <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>

O erro ao executar a ação:

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

questionAnswers(4)

yourAnswerToTheQuestion