【发布时间】:2014-12-10 22:26:52
【问题描述】:
我有以下控制器将报告导出为pdf, xls, csv。它的代码如下所示
@Controller
@RequestMapping(value = ServicePath.COMMON_PREFIX + "/test-report")
public class ReportController
{
@Autowired
private UserService userService;
public static JasperDesign jasperDesign;
public static JasperPrint jasperPrint;
public static JasperReport jasperReport;
public static String reportTemplateUrl = "/lms-internet/src/main/webapp/report.jrxml";
@RequestMapping(method = RequestMethod.GET , value = "/pdf")
public void generatePdf()
{
try{
List<User> usersList = userService.findAll();
JRDataSource JRdataSource = new JRBeanCollectionDataSource(usersList);
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(reportTemplateUrl);
//get report file and then load into jasperDesign
jasperDesign = JRXmlLoader.load(resourceAsStream);
//compile the jasperDesign
jasperReport = JasperCompileManager.compileReport(jasperDesign);
ByteArrayOutputStream output = new ByteArrayOutputStream();
OutputStream outputfile = new FileOutputStream(new File("c:/temp/person.xls"));
HashMap params = new HashMap();
//fill the ready report with data and parameter
jasperPrint = JasperFillManager.fillReport(jasperReport, params, JRdataSource);
//coding for Excel
JRXlsExporter exporterXls = new JRXlsExporter();
exporterXls.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporterXls.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, output);
exporterXls.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporterXls.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporterXls.exportReport();
outputfile.write(output.toByteArray());
}
catch(Exception e)
{
e.printStackTrace();
}
}
当我运行它时,我得到以下异常:
net.sf.jasperreports.engine.JRException: java.net.MalformedURLException
谁能告诉我我做错了什么以及如何解决它。并告诉我在哪里添加 jrxml 文件。
【问题讨论】:
-
你试过.jrxml文件的绝对路径吗?
标签: java jasper-reports