怎么用ireport写一个表格详细步骤

怎么用ireport写一个表格详细步骤,第1张

方法/步骤

首先,创建IReport表格文件,双击打开“Jaspersoft iReport Designer 5.6.0 ”,设计器界面如下图所示:

接着,在左上角找到“文件”,点击它下面的“New...”子项,打开新建窗口,如下图所示:

由于是新建报表,需要选择Report,一般情况下,选择的模板是Blank A4,单击“Launch Report Wizard”,进入下一步

如下图所示:

这时,进入填写报表的名称和选择生成文件路径,选填完毕后单击“下一步”,

如下图所示:

然后,填写查询。如果没有默认的数据库选择,需要单击“New”,选择数据库驱动、路径,填写数据库账号和密码,

如下图所示:

由于用的是MySQL数据库,数据库连接用的是JDBC连接,填写查询名称,JDBC驱动,JDBC路径,数据库用户名和密码

如下图所示:

由于连接数据库,需要查询数据库,编写SQL语句,

如下图所示:

进入下一步后,将需要的字段添加到右边框中

如下图所示:

接着,编写完SQL语句后,需要分组的话,选择某一字段,

如下图所示:

上述设置完毕后,进入完成状态,单击“完成”,

如下图所示:

1)用ireport创建完成jrxml文件后,到ireport的安装目录找到相应的jasper文件,然后放到项目的一个目录中。(由于让程序每次都编译jrxml很浪费时间,再说模板也不容易改变,建议只编译一次就OK)

2)使用代码如下

Session session = HibernateUtil.currentSession()

Connection con = session.connection()//得到链接

Statement stmt = con.createStatement()

ResultSet rs = stmt.executeQ ry("select * from applications_list where app_id='" +appId+"'")//用数据集传入带参数的SQL语句

System.out.println("select * from applications_list where appl_list_id='" +appId+"'")

String appPath = req st.getSession().getServletContext().getRealPath("/")//得到以便于好的jasper文件

if (appPath.lastIndexOf("\\") != appPath.length() - 1)appPath += "\\"

String reportFileName = appPath+ "jasper\\untitled_report_1.jasper"

Map parameters = new HashMap()

parameters.put("Title", "设备申请列表")//注意可以有很多个参数

JasperPrint jasperPrint = JasperFillManager.fillReport(reportFileName, parameters, new JRResultSetDataSource(rs))

JRRtfExporter exporter = null

exporter = new JRRtfExporter()

response.setContentType("text/htmlcharset=UTF-8")

response.setContentType("application/msword")

String applicatiosname = ToUTF8.toUtf8String("设备申请单")//处理下载后文件名中文问题

response.setHeader("Content-disposition","attachmentfilename="+applicatiosname+".doc")

exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8")

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint)

exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream())

exporter.exportReport()

?

?

?

* 返回字符编码UTF-8 */

?p lic static String toUtf8String(String s) {

StringB?r sb = new StringB?r()

for (int i = 0i <s.length()i++) {

char c = s.charAt(i)

if (c >= 0 &&c <= 255) {

sb.append(c)

} else {

byte[] b

try {

b = Character.toString(c).getBytes("UTF-8")

} catch (Exception ex) {

//System.out.println(ex)

b = new byte[0]

}

for (int j = 0j <b.lengthj++) {

int k = b[j]

if (k <0)

k += 256

sb.append("%" + Integer.toHexString(k).toUpperCase())

}

}

}

return sb.toString()

?}

不懂楼主为什么要用这个也太麻烦了吧,上面是我去论坛里面搜的,真心无力啊啊,我用的finereport,功能很强大齐全啊,也不用还搞代码。网上有免费版,楼主可以百度看看,希望可以帮到你。

这个问题,也困扰我很久,今天解决了,主要是有个属性设置下,即在主表调用子表时,需要为子报表添加参数,选择“从主报表复制”,然后依次类推,孙报表,或者说子报表再嵌套的子报表,参数传递也使用此方法即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11870404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存