Формат ячейки Excel в отчете JasperReport

Я работаю над отчетом JasperReport, который генерирует файл Excel. По некоторым причинам мои форматы / типы ячеек не такие, какими они должны быть. Например, у меня есть объект Date в моей ячейке, но когда я генерирую файл Excel, он устанавливает тип ячейки в Number или Long type - это текст в ячейке, но в ячейкеФормат s - это число, а также, когда пользователь изменяет ячейку даты (например, дата 11.02.2012 была изменена на 11.03.2012), он преобразует дату в число (41581,00).

Вот мой код (он просто выводит всплывающий поток в окно браузера с отчетом):

public void generateXLSPopup(String tmpltFileLocation, Map params, Collection vo) {
    log.fine("ReportEngine: Start Generate XLS Popup Report Function!");

    Filename f = new Filename(tmpltFileLocation);

    String xlsFileName = f.getFileName() +  "_" + sDateFormated + ".xlsx";

    try {
        JasperPrint jasperPrint = getJRPrint(tmpltFileLocation, params, new JRBeanCollectionDataSource(vo));

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        JRXlsxExporter exporter = getCommonXlsxExporter();

        exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, baos); // fill byte array output stream

        exporter.exportReport();

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-disposition", "attachment; filename=" + xlsFileName);
        response.setContentLength(baos.size());
        response.getOutputStream().write(baos.toByteArray());
        context.responseComplete();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    log.fine("ReportEngine: Finish Generate XLS Popup Report Function!");
}


private JRXlsxExporter getCommonXlsxExporter(){
    JRXlsxExporter exporter = new JRXlsxExporter();
    exporter.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE);
    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
    exporter.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE, Boolean.TRUE);
    exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
    exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    exporter.setParameter(JExcelApiExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
    //exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);


    return exporter;
}

И вот пример первых нескольких строк в моем файле отчета о яшме:


                
                
                
            
            
                
                
                
            
            
                
                
                
            
            
                
                
                    
                
                
            
            
                
                
                
            

(Пожалуйста, не'не спрашивай меня, почему яя генерирую файл шаблона jasperreport на лету,как мне это нужно.)

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

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