0

レポートを Excel (xls) 形式でエクスポートしようとしています。開く/保存するダイアログ ボックスを使用して、ブラウザーからファイルをダウンロードするオプションを指定します。

[ファイルのダウンロード] ボックスが表示されたときに、ファイル名が正しく表示されません。ファイル名は URL として提供されます

以下は私のコードです:

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReportMCQ, params, datasource);

JRXlsExporter jasperXlsExportMgr = new JRXlsExporter();

ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
jasperXlsExportMgr.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, java.lang.Boolean.FALSE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, java.lang.Boolean.FALSE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_IGNORE_CELL_BORDER, java.lang.Boolean.FALSE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.CREATE_CUSTOM_PALETTE, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsReport);
jasperXlsExportMgr.exportReport();
bytes = xlsReport.toByteArray();
getResponse().setHeader("Content-disposition", "attachment; filename=\"report.xls\"");
getResponse().setContentType("application/vnd.ms-excel");
getResponse().setContentLength(bytes.length);
if (bytes.length > 0) {
    servletOutputStream.write(bytes, 0, bytes.length);
    servletOutputStream.flush();
    servletOutputStream.close();
}
4

2 に答える 2

1

このパラメータを試してください:

jasperXlsExportMgr.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "MyFile");

ジャスパーのドキュメントから:

static JRExporterParameter OUTPUT_FILE_NAME: エクスポートされたレポートのファイル名。

于 2013-04-04T07:07:11.893 に答える
0

このコードを試してください:

String dir = "C:/myproject/";
Connection kns = BukaKoneksi(url);   
HashMap hm = new HashMap(); 
String name = dir+"file/_.xls"";
String nfl = dir+"file/__.xls"; 
String fjas = "a.jasper";   
String nname = "a.xls";

//jasper
JasperPrint print = JasperFillManager.fillReport(dir+"jasper/"+fjas, hm, kns);
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();  
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsReport);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE, fname);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, nfl);
exporter.exportReport();    

//download file
byte bytes[] = xlsReport.toByteArray(); 
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename="+nname); 
response.setContentLength(bytes.length);
xlsReport.close();
OutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
于 2013-04-04T07:33:01.150 に答える