(三)Ireport制作报表(欢迎加群组http://jaspereport.group.iteye.com)

本文详细介绍了如何使用IREPORT工具制作Oracle数据库中的SCOTT/TIGER用户空间的报表,包括新建模板、配置数据库连接、设计报表布局、预览与优化中文显示等功能。
Ireport制作报表模板。


这里以oracle自带的scott/tiger用户空间为例:

[img]http://dl.iteye.com/upload/picture/pic/118557/b62a5879-e344-381f-afb8-6d5f3e315c96.jpg[/img]


用ireport制作一个查询employee的信息报表。


文件——new:

[img]http://dl.iteye.com/upload/picture/pic/118559/2a77aa12-1d93-3f60-8bb9-c21fc41fcfb6.jpg[/img]


可以选择一个ireport提供的template,有带图片效果样式的和空的,这里选择Blank A4 Lanscape。然后“open this template”


填写模板的名称和存放路径:

[img]http://dl.iteye.com/upload/picture/pic/118561/0be2cfcc-5681-38e8-b9da-120e1bbaa9b7.jpg[/img]


“下一步”“完成”


新建好以后,ireport像大部分的工具一样,打开这样一些工作区:

整个面板图:

[img]http://dl.iteye.com/upload/picture/pic/118567/3d13eb6a-dbb4-365f-be34-269441796d9c.jpg[/img]


1.报表信息面板

[img]http://dl.iteye.com/upload/picture/pic/118569/50e72fec-5979-3219-a441-502175c5c2fa.jpg[/img]


2.左边报表编辑面板,右上组件面板,右下属性面板;可直接拖拽一个组件至报表上,选中组件在属性面板就可以编辑此组件的属性。

[img]http://dl.iteye.com/upload/picture/pic/118571/e56580c9-ad6e-3412-aa46-a3bcc35a0b3f.jpg[/img]


下面具体制作这个报表:

ireport的报表分为这几个部分:

[img]http://dl.iteye.com/upload/picture/pic/118573/935a0c8a-f66b-3759-87af-911f3992b7b6.jpg[/img]


具体各部分放什么组件,如何结构看下面我做好的例子:

[img]http://dl.iteye.com/upload/picture/pic/118577/31eedac7-262c-3777-a393-61cd99090ea6.jpg[/img]


放大面板组件大小,方便我们查看和编辑组件信息:

[img]http://dl.iteye.com/upload/picture/pic/118579/841197f3-bbb3-3c4f-97ac-ec6399891a9e.jpg[/img]


制作这个报表步骤:

1.点击这个数据库小图标的按钮

[img]http://dl.iteye.com/upload/picture/pic/118581/8beea439-7a69-34af-9e07-c6d4f8042ddb.jpg[/img]


2.将sql语句放置到里面,“read fields”,sql语句即为从数据源取数据至报表的sql,点击“ok”

[img]http://dl.iteye.com/upload/picture/pic/118583/08043310-3c75-3ae3-8624-61933d328ad9.jpg[/img]


3.做好报表的头及列头等信息


4.从Fields的子节点拖拽我们填好的sql查询出字段值报表的Detail区

[img]http://dl.iteye.com/upload/picture/pic/118585/009c0906-d396-33dc-bd2b-73ce1108b27f.jpg[/img]


到这步报表的大概就做好了。


下面预览这个报表的数据:

1.预览之前,先设置预览的格式,我们选择pdf

还要菜单上--工具--选项,选择Classpath的卡片区,添加oracle的驱动jar

[img]http://dl.iteye.com/upload/picture/pic/118589/111ef238-e8bc-3ab8-82da-99a7ffc3ad75.jpg[/img]


2.当前是Designer模式,点击Previe按钮:

[img]http://dl.iteye.com/upload/picture/pic/118587/18a658b1-4503-3f29-9eb5-e137b7e0f556.jpg[/img]


当前我们的报表还没有参数,如果sql有参数在preview操作时要填写参数。


看到的结果:

1.ireport中的结果:

[img]http://dl.iteye.com/upload/picture/pic/118591/526bc858-8ee8-33cf-99f5-c46d72f2e5bf.jpg[/img]


2.Adobe pdf的结果:

[img]http://dl.iteye.com/upload/picture/pic/118593/b32c4f5b-4beb-3cd2-9ee3-bb6af49fc260.jpg[/img]


结果看到报表上面的中文都没有显示,因为我们没有设置报表的字体以及添加支持中文的第三方jar。


现在添加这些jar,及设置字体:

1.菜单--工具--选项,选择Classpath的卡片区。

“Add Jar”,添加oracle的驱动jar,支持中文的iTextAsian.jar和iTextAsianCmaps.jar


[img]http://dl.iteye.com/upload/picture/pic/118595/05e7779e-435c-3e06-a656-b6cd9f8def92.jpg[/img]


2.在报表编辑版面选中所有文本框,在属性面板设置:

pdf font name--STSong-Light

pdf encoding --UniGB-UCS2-H (Chinese Simplified)

[img]http://dl.iteye.com/upload/picture/pic/118597/bcf8189e-b4b5-30e5-be35-a5ff020a33c1.jpg[/img]


这回,再预览报表,就有中文显示了。

[img]http://dl.iteye.com/upload/picture/pic/118599/66abea05-c268-319e-81e8-5106d1431281.jpg[/img]


基本完成,写的累死了!!!
文件路径=/E:/wx-workspace/sxtc/wx4.0_bzb_c1.0.0/src/main/webapp/WEB-INF/classes/jcrxxcx_jczm.jrxml 2025-11-27 19:47:51,465 [http-bio-8080-exec-8] ERROR org.apache.commons.digester.Digester - Parse Error at line 97 column 10: cvc-complex-type.2.4.a: Invalid content was found starting with element 'shape'. One of '{"http://jasperreports.sourceforge.net/jasperreports":property, "http://jasperreports.sourceforge.net/jasperreports":printWhenExpression, "http://jasperreports.sourceforge.net/jasperreports":break, "http://jasperreports.sourceforge.net/jasperreports":line, "http://jasperreports.sourceforge.net/jasperreports":rectangle, "http://jasperreports.sourceforge.net/jasperreports":ellipse, "http://jasperreports.sourceforge.net/jasperreports":image, "http://jasperreports.sourceforge.net/jasperreports":staticText, "http://jasperreports.sourceforge.net/jasperreports":textField, "http://jasperreports.sourceforge.net/jasperreports":subreport, "http://jasperreports.sourceforge.net/jasperreports":pieChart, "http://jasperreports.sourceforge.net/jasperreports":pie3DChart, "http://jasperreports.sourceforge.net/jasperreports":barChart, "http://jasperreports.sourceforge.net/jasperreports":bar3DChart, "http://jasperreports.sourceforge.net/jasperreports":xyBarChart, "http://jasperreports.sourceforge.net/jasperreports":stackedBarChart, "http://jasperreports.sourceforge.net/jasperreports":stackedBar3DChart, "http://jasperreports.sourceforge.net/jasperreports":lineChart, "http://jasperreports.sourceforge.net/jasperreports":xyLineChart, "http://jasperreports.sourceforge.net/jasperreports":areaChart, "http://jasperreports.sourceforge.net/jasperreports":xyAreaChart, "http://jasperreports.sourceforge.net/jasperreports":scatterChart, "http://jasperreports.sourceforge.net/jasperreports":bubbleChart, "http://jasperreports.sourceforge.net/jasperreports":timeSeriesChart, "http://jasperreports.sourceforge.net/jasperreports":highLowChart, "http://jasperreports.sourceforge.net/jasperreports":candlestickChart, "http://jasperreports.sourceforge.net/jasperreports":meterChart, "http://jasperreports.sourceforge.net/jasperreports":thermometerChart, "http://jasperreports.sourceforge.net/jasperreports":multiAxisChart, "http://jasperreports.sourceforge.net/jasperreports":stackedAreaChart, "http://jasperreports.sourceforge.net/jasperreports":ganttChart, "http://jasperreports.sourceforge.net/jasperreports":elementGroup, "http://jasperreports.sourceforge.net/jasperreports":crosstab, "http://jasperreports.sourceforge.net/jasperreports":frame, "http://jasperreports.sourceforge.net/jasperreports":componentElement, "http://jasperreports.sourceforge.net/jasperreports":genericElement, "http://jasperreports.sourceforge.net/jasperreports":returnValue}' is expected. org.xml.sax.SAXParseException; lineNumber: 97; columnNumber: 10; cvc-complex-type.2.4.a: Invalid content was found starting with element 'shape'. One of '{"http://jasperreports.sourceforge.net/jasperreports":property, "http://jasperreports.sourceforge.net/jasperreports":printWhenExpression, "http://jasperreports.sourceforge.net/jasperreports":break, "http://jasperreports.sourceforge.net/jasperreports":line, "http://jasperreports.sourceforge.net/jasperreports":rectangle, "http://jasperreports.sourceforge.net/jasperreports":ellipse, "http://jasperreports.sourceforge.net/jasperreports":image, "http://jasperreports.sourceforge.net/jasperreports":staticText, "http://jasperreports.sourceforge.net/jasperreports":textField, "http://jasperreports.sourceforge.net/jasperreports":subreport, "http://jasperreports.sourceforge.net/jasperreports":pieChart, "http://jasperreports.sourceforge.net/jasperreports":pie3DChart, "http://jasperreports.sourceforge.net/jasperreports":barChart, "http://jasperreports.sourceforge.net/jasperreports":bar3DChart, "http://jasperreports.sourceforge.net/jasperreports":xyBarChart, "http://jasperreports.sourceforge.net/jasperreports":stackedBarChart, "http://jasperreports.sourceforge.net/jasperreports":stackedBar3DChart, "http://jasperreports.sourceforge.net/jasperreports":lineChart, "http://jasperreports.sourceforge.net/jasperreports":xyLineChart, "http://jasperreports.sourceforge.net/jasperreports":areaChart, "http://jasperreports.sourceforge.net/jasperreports":xyAreaChart, "http://jasperreports.sourceforge.net/jasperreports":scatterChart, "http://jasperreports.sourceforge.net/jasperreports":bubbleChart, "http://jasperreports.sourceforge.net/jasperreports":timeSeriesChart, "http://jasperreports.sourceforge.net/jasperreports":highLowChart, "http://jasperreports.sourceforge.net/jasperreports":candlestickChart, "http://jasperreports.sourceforge.net/jasperreports":meterChart, "http://jasperreports.sourceforge.net/jasperreports":thermometerChart, "http://jasperreports.sourceforge.net/jasperreports":multiAxisChart, "http://jasperreports.sourceforge.net/jasperreports":stackedAreaChart, "http://jasperreports.sourceforge.net/jasperreports":ganttChart, "http://jasperreports.sourceforge.net/jasperreports":elementGroup, "http://jasperreports.sourceforge.net/jasperreports":crosstab, "http://jasperreports.sourceforge.net/jasperreports":frame, "http://jasperreports.sourceforge.net/jasperreports":componentElement, "http://jasperreports.sourceforge.net/jasperreports":genericElement, "http://jasperreports.sourceforge.net/jasperreports":returnValue}' is expected. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
最新发布
11-28
<think> 根据用户描述,错误出现在 jrxml 文件的第97行第10列,具体是 `<shape>` 元素内出现了无效内容,而解析器期望的是特定元素。在 JasperReports 中,`<shape>` 元素有严格的子元素定义。 ### 解决步骤: 1. **定位错误位置**: - 打开文件:`/E:/wx-workspace/sxtc/wx4.0_bzb_c1.0.0/src/main/webapp/WEB-INF/classes/jcrxxcx_jczm.jrxml` - 跳转至第97行附近 2. **检查 `<shape>` 的合法子元素**: 根据 JasperReports Schema 定义,`<shape>` 允许的子元素为(按顺序): - `reportElement`(必须) - `graphicElement`(可选) - `shapeType`(必须) - `roundRadius`(可选,仅当形状为圆角矩形时) - `rotation`(可选) 3. **修复无效结构**: - 确保子元素顺序正确 - 移除未定义的元素 ### 正确示例: ```xml <shape> <!-- 1. reportElement 必须放在第一位 --> <reportElement x="0" y="0" width="100" height="50"/> <!-- 2. graphicElement 可选(用于设置边框/颜色) --> <graphicElement> <pen lineWidth="0.5" lineColor="#CCCCCC"/> </graphicElement> <!-- 3. shapeType 必须存在 --> <shapeType>roundRectangle</shapeType> <!-- 4. roundRadius 在需要圆角时添 --> <roundRadius>5</roundRadius> <!-- 5. rotation 旋转元素(可选) --> <rotation>45</rotation> </shape> ``` ### 常见错误原因: 1. **元素顺序错误**:例如将`<rotation>`放在`<reportElement>`前面 2. **使用了非法子元素**:例如在`<shape>`内直接放`<text>`等非允许元素 3. **缺少必须元素**:例如忘记写`<shapeType>` ### 调试建议: 1. 检查第97行附近是否存在: - 未闭合的标签 - 拼写错误的元素名(如`<shapType>`) - 顺序错乱(如`<rotation>`出现在`<shapeType>`之前) ### 版本兼容性提示: - JasperReports 6.0+ 支持`<rotation>`元素 - 旧版本需升级或使用图片替代方案(参考引用[^1]关于版本兼容性的说明) §§相关问题§§ 1. 如何验证 JRXML 文件是否符合 Schema 规范? 2.iReport 设计器中如何正确添旋转效果? 3. 旋转后的元素位置计算有哪些注意事项? 4. 是否支持动态旋转角度(通过参数控制)? </think> 在 JasperReports 的 JRXML 文件中遇到 "从元素 'shape' 开始发现无效内容" 的错误,通常是由于 `<shape>` 元素的子元素顺序不正确或使用了无效元素造成的。以下是完整的解决方案: ### 错误原因分析 1. **XML 结构要求严格**:JRXML 文件需要严格遵循 JasperReports Schema 定义的元素顺序 2. **常见问题位置**:第 97 行第 10 列的错误表明在 `<shape>` 元素内部出现了不符合预期的内容 3. **版本兼容性问题**:引用[1]中提到的高版本无法解析低版本问题可能相关 ### 解决方案步骤 1. **检查 `<shape>` 元素的结构顺序** 正确顺序应该是: ```xml <shape> <!-- 1. reportElement 必须放在首位 --> <reportElement .../> <!-- 2. graphicElement (可选) --> <graphicElement>...</graphicElement> <!-- 3. shapeType (必须) --> <shapeType>roundRectangle</shapeType> <!-- 4. roundRadius (可选) --> <roundRadius>5</roundRadius> <!-- 5. rotation (可选) --> <rotation>45</rotation> </shape> ``` 2. **修复常见错误情况**: ```xml <!-- 错误示例:元素顺序颠倒 --> <shape> <rotation>30</rotation> <!-- rotation 不能放在 reportElement 前面 --> <reportElement x="0" y="0" width="100" height="50"/> </shape> <!-- 正确修复:调整元素顺序 --> <shape> <reportElement x="0" y="0" width="100" height="50"/> <rotation>30</rotation> <!-- rotation 放在正确位置 --> </shape> ``` 3. **验证 XML 结构完整性**: - 检查所有标签是否正确闭合 - 确保没有在 `<shape>` 内使用无效元素(如 `<text>` 等) - 使用 XML 验证工具检查文件 4. **版本兼容性处理**(参考引用[1]): - 确认使用的 JasperReports 和 iReport 版本一致 - 在 iReport 设计器中重新保存 JRXML 文件以更新格式 5. **使用设计器修复**: ```bash # 在 iReport 中打开文件并重新保存 ./ireport.sh /E:/wx-workspace/.../jcrxxcx_jczm.jrxml ``` ### 完整正确示例 ```xml <band height="50"> <shape> <!-- 1. 必须元素 --> <reportElement x="10" y="10" width="200" height="30"/> <!-- 2. 图形属性 --> <graphicElement> <pen lineWidth="1.0" lineColor="#000000"/> </graphicElement> <!-- 3. 形状类型 --> <shapeType>roundRectangle</shapeType> <!-- 4. 圆角半径 --> <roundRadius>5</roundRadius> <!-- 5. 旋转设置 --> <rotation>30</rotation> </shape> </band> ``` ### 调试建议 1.iReport 设计器中打开文件,查看错误位置的视觉提示 2. 使用 XML 验证工具: ```bash xmllint --noout --schema jasperreport.xsd jcrxxcx_jczm.jrxml ``` 3. 引用[2]中的导出方法可帮助验证: ```java // 导出为 HTML 调试 JasperExportManager.exportReportToHtmlFile(jasperPrint, "debug.html"); ``` ### 字体兼容性处理(参考引用[3]) 如果涉及中文显示问题: 1. 创建 `jasperreports_extension.properties` 2.字体配置: ```properties net.sf.jasperreports.extension.registry.factory.simple.font.families=... ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值