-
jxls做报表,数据库查询错误.20
我用源代码给的例子
在Excel中写<jx:forEach items="${rm.exec('SELECT d.name depname, e.name empname, payment, bonus FROM employee e, department d where d.id = e.depid order by age desc')}" var="employee">
${employee.depname}
</jx:forEach>
后台会出现找不到name,不能执行上述的sql语句.但如果简化
<jx:forEach items="${rm.exec('SELECT e.name , payment, bonus FROM employee e, department d where d.id = e.depid order by age desc')}" var="employee">
${employee.name}
</jx:forEach>
就是不用别名,就正确了,这是为什么.因为我要empolyee表的name和department的name,没有别名,不知道怎么做.况且他给的例子都有别名的.
注:别名之前,不管用不用as都不行
Exception in thread "main" java.lang.RuntimeException: Can't parse an expression rm.exec('SELECT d.name depname, e.name empname, payment, bonus FROM employee e, department d where d.id = e.depid order by age desc')
at net.sf.jxls.tag.ForEachTag.parseItemsProperty(ForEachTag.java:142)
at net.sf.jxls.tag.ForEachTag.init(ForEachTag.java:104)
at net.sf.jxls.parser.CellParser.parseTag(CellParser.java:294)
at net.sf.jxls.parser.CellParser.parseCellValue(CellParser.java:196)
at net.sf.jxls.parser.CellParser.parseCell(CellParser.java:57)
at net.sf.jxls.transformer.SheetTransformer.parseCells(SheetTransformer.java:193)
at net.sf.jxls.transformer.SheetTransformer.parseRow(SheetTransformer.java:263)
at net.sf.jxls.transformer.SheetTransformer.transformSheet(SheetTransformer.java:82)
at net.sf.jxls.transformer.XLSTransformer.transformWorkbook(XLSTransformer.java:238)
at net.sf.jxls.transformer.XLSTransformer.transformXLS(XLSTransformer.java:217)
at net.sf.jxls.transformer.XLSTransformer.transformXLS(XLSTransformer.java:196)
at net.sf.jxls.sample.ReportingSample.main(ReportingSample.java:38)
Caused by: java.sql.SQLException: Column 'name' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1093)
at com.mysql.jdbc.ResultSetImpl.getObject(ResultSetImpl.java:4951)
at org.apache.commons.beanutils.JDBCDynaClass.getObject(JDBCDynaClass.java:271)
at org.apache.commons.beanutils.RowSetDynaClass.copy(RowSetDynaClass.java:232)
at org.apache.commons.beanutils.RowSetDynaClass.<init>(RowSetDynaClass.java:187)
at org.apache.commons.beanutils.RowSetDynaClass.<init>(RowSetDynaClass.java:152)
at net.sf.jxls.report.ReportManagerImpl.exec(ReportManagerImpl.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:231)
at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:82)
at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:56)
at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:50)
at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:79)
at net.sf.jxls.parser.Expression.evaluate(Expression.java:69)
at net.sf.jxls.tag.ForEachTag.parseItemsProperty(ForEachTag.java:135)2010年5月31日 22:58
3个答案 按时间排序 按投票排序
-
楼主好强大,竟然把这么复杂的问题解决了,以前我用开源报表被代码搞得快崩溃了,后来我就用帆软报表,现在还挺省事的,主要不用写代码了
2015年1月21日 14:20
-
最近做项目也遇到了上面的情况,看到楼上的提示后才恍然大悟,所以我就将低版本的链接数据库的架包更换成高版本的,结果问题果然解决。我用的是mysql数据库,更换成mysql-connector-java.jar架包即可。
2013年3月18日 11:37
-
这是beanutil里的一个bug,1.8.3已经修正,ReportManagerImpl.java需要改一下,RowSetDynaClass rsdc = new RowSetDynaClass(rs, true, true); 加上第三个参数,true, useColumnLabel,
use JDBC column labels instead of the JDBC column names2012年6月03日 12:54
相关推荐
解决net.sf.jxls1.0.6中getCellType()和org.apache.poi4.1.2报错问题
jXLS的功能是:只使用几行代码就可以建立极端复杂的Excel报表。你所需要实现的大部分工作是建立XLS模板文件,完成所需要的格式,公式和宏等等,使用注释来指示出数据需要填入的位置。接着写几行代码调用jXLS引擎解析...
使用net.sf.jxls下的jxls-core包进行复杂的Excel导出
jXLS可以与Java集合或数据库结果集配合使用,自动将数据填入模板,生成报表。例如,可以使用Java的JDBC API从数据库检索数据,然后传递给jXLS进行填充。 总结,Apache POI适合对Excel进行直接操作,包括读取、写入...
**官方jxls-2.4.1** Jxls是一个强大的Java库,用于处理Excel工作簿。它允许开发者使用Java编程语言动态地填充和转换Excel模板,极大地简化了数据到Excel的映射过程。官方发布的jxls-2.4.1是这个库的一个稳定版本,...
例如,可以直接将数据库查询结果导出为Excel报告。 9. **错误处理和调试** - jxls 提供了详细的错误报告,帮助开发者快速定位和解决模板设计中的问题。 10. **版本更新** - jxls 2.3.0 版本相对于早期版本可能...
jxls-core-1.0.7.jar包源码,支持jdkl8以及poi4.0以上的版本,原jar包作者的最高版本多年没有维护,通过修改原作者源码,为1.0.7版本支持高版本的poi库如poi4.0.1及以上。
- **报告生成**:Jxls适用于需要根据数据库或其他数据源生成定制化Excel报告的场合,例如财务报表、销售统计等。 - **数据导入导出**:可以方便地将Java对象转换为Excel格式,用于数据交换或用户界面的数据输入。 ...
一.JXLS简介 ,安装,以及标签使用说明 Each数据循环、公式使用、if-else逻辑判断、加载图片、动态表格、数据分组、单元格超链接、SQL模板实现、自定义表达式解析引擎、自定义函数、单元格合并
最近项目poi升级,导出excel有异常。通过修改源码,支持poi4.x。已经完美验证。
总之,`commons-jexl-2.1.1.jar`和`jxls-core1.0.3.jar`这两个库在`jxls`框架中起到了关键作用,它们共同实现了将Java数据对象与Excel模板动态结合,生成定制化报表的功能。对于需要处理大量数据导出的Java项目,...
关于net.sf.jxls下的jxls-core包与POI 4.1.2版本不兼容的解决
**jxls1.0.5报表工具详解** jxls是一个基于Java的库,它扩展了Apache POI库的功能,使得用户能够用简单的Excel模板来创建复杂的动态报告。jxls1.0.5是该工具的一个版本,它提供了一系列增强功能和改进,帮助开发者...
兼容jdk1.7-兼容POM3.11及以上版本;如果需要源码,可以查看 https://download.csdn.net/download/iamcuilong/12066123
特别是在金融、教育、数据分析等行业,需要频繁生成或处理Excel报表时,jxls能显著提高开发效率。 **总结** jxls-2.2.9.zip这个压缩包中包含的是jxls库的2.2.9版本,它结合Apache POI,为Java开发者提供了一个强大...
**jxls:强大的Java报表生成库** 在Java开发中,生成报表是一项常见的需求,而`jxls`就是一款专门用于创建动态Excel报表的开源库。它允许开发者使用标准的Java编程方式来定义复杂的Excel模板,并将数据填充到这些...
jxls-core-0.9.6.jar为的是更好的发扬优良的精要的代码!
通过使用模板和数据绑定,可以高效地从Java程序生成复杂的Excel文档,尤其适合大数据量的报表生成场景。虽然这是较老的版本,但对于那些不需要最新特性的项目来说,仍然是一个可靠的解决方案。在实际使用中,开发者...
jxls-jexcel-1.0.6.jar java读取excel文件的jarjxls-jexcel-1.0.6.jar
开发人员只需要编写SQL查询,设置模板字段,然后调用JXLS的相关方法,就能自动生成定制化的Excel报表。这种方式既节省了开发时间,又保证了输出格式的一致性和专业性,是企业级应用中处理大量数据的理想选择。在实际...