[java]
因为还在初学阶段,数据源暂时是在程序中传入,还没通过数据库或者javabean传入,接下来的时间里慢慢深入,jasperreport报表的简易demo
。首先是在IReport软件里设计好自己的报表图,我设计了一个很简单的报表,其实报表设计最重要的是其核心的几个过程<img src="http://write.blog.csdn.net/postedit/12967677" alt=""></p><p>设计报表,数据导入,输出报表[java]
第一个程序是service里的下载代码
[java]
@Service("reportService")
@Path("/report")
public class ReportService {
@Autowired
private ICommonDao dao;
@Path("download")
@Produces(MediaType.TEXT_PLAIN)
@Transactional
public String downloadReport(@Context HttpServletRequest req , @Context HttpServletResponse res) throws Exception{
String designFilePath = req.getSession().getServletContext().getRealPath("/jasper") +
File.separator + "reportTest.jrxml";
File designFile = new File(designFilePath);
if(designFile.exists()){
DataReportProcess reportProcess = new DataReportProcess();
reportProcess.process(req, res, designFile);
}
return "success";
}
}
这段代码里涉及DataReportProcess类
[java]
public class DataReportProcess extends XLSReportProcess{
/**
*从模板文件编译获得jasperReport对象
*@return JasperReport对象 jasperReport
* @throws JRException
*/
private JasperReport getJasperReport(File designFile) throws Exception{
JasperReport jasperReport = null;
JasperDesign design = JRXmlLoader.load(designFile);
jasperReport = JasperCompileManager.compileReport(design);
return jasperReport;
}
public void process(HttpServletRequest req , HttpServletResponse res, File designFile) throws Exception{
String utputFileName = "dataReport.xlsx";
Map
dataMap = new HashMap (); dataMap.put("name", "张三");
Collection
dataMapList.add(dataMap);
JRMapCollectionDataSource dataSource = new JRMapCollectionDataSource(dataMapList);
JasperReport jasperReport = this.getJasperReport(designFile);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null,dataSource);
this.exportWebReport(ReportProcess.Type.xlsx, res, jasperPrint , outputFileName);
}
}
这里面的数据源接口用的是JRMapCollectionDataSource,现在是写死的key value,
电脑资料
《jasperreport报表的简易demo》(https://www.unjs.com)。这个类中主要是jasperrepor中涉及到的一些APIJasperReport核心API
1. JRXmlLoader(xml加载器)
里面有load方法用来加载*.jrxml文件 返回jasperDesign对象
2.JRcompile(接口)
里面定义了方法接受参数返回 jasperReport对象
3.JasperCompileManager(编译管理器)
提供了一些方法用来编译Report成文件的
JasperReport jasperReport = JasperCompileManager.compileReport(design);
4.JasperFillManager(填充管理器)
主要用来把report填充到文件里面
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, reportParams, resultSetDataSource);
5.JasperPrintManager(打印管理)
主要是把JasperPrint对象(相关的数据)打印到pdf.xml等文件中去
6.JasperExportManager(导出管理器)
主要是把JasperPrint对象(相关的数据)导出到pdf.xml等文件中去
最后一个时输出报表函数
[java]
@Override
public void exportWebReport(Type type, HttpServletResponse res, JasperPrint print, String outputFileName) throws Exception{
if(type!=null&&type.equals(ReportProcess.Type.xlsx)){
//2007 excel以上
res.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}else{
res.setContentType("application/vnd.ms-excel");
}
//解决中文文件名并设置文件名
if(outputFileName!=null && !outputFileName.isEmpty()){
res.setHeader("charset","ISO8859-1");
res.setHeader("Content-Disposition", "attachment;filename=\"" + new String(outputFileName.getBytes(), "ISO8859-1") + "\"");
}
BufferedOutputStream utputStream =null;
utputStream = new BufferedOutputStream(res.getOutputStream());
this.exportFile(res,print,outputFileName,outputStream);