报表报错:net.sf.jasperreports.engine.JRException: Can't add cell.

dxjaccp 2010-06-02 02:15:30
ireport做成报表模板 通过Datasource填充数据。转换成pdf,html,word都是可以的。但是转换成Excel的时候竟然报错:net.sf.jasperreports.engine.JRException: Can't add cell.
at net.sf.jasperreports.engine.export.JExcelApiExporter.exportText(JExcelApiExporter.java:368)
at net.sf.jasperreports.engine.export.JRXlsAbstractExporter.exportPage(JRXlsAbstractExporter.java:442)
at net.sf.jasperreports.engine.export.JRXlsAbstractExporter.exportReportToStream(JRXlsAbstractExporter.java:361)
at net.sf.jasperreports.engine.export.JRXlsAbstractExporter.exportReport(JRXlsAbstractExporter.java:178)
at com.qwserv.itm.pfl.rpt.engine.DefaultReportGenerator.xls(DefaultReportGenerator.java:303)
at com.qwserv.itm.pfl.rpt.servlet.ReportEngineServlet.doGet(ReportEngineServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
这个问题我看了代码感觉没问题。。求救啊!
谢谢啊,能帮我解决这个问题我一定给高分。。。。。
...全文
654 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaynezhang 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 izard999 的回复:]

jre. 虽然我没有过这个东西, 但是用jaboc操作word excel,是要往你的jdk的jre下面放一个叫jaboc.dll的文件, 要不然就搞不了
[/Quote]
jasperreport使用的是jxl操作excel的,不存在你说的问题。

以下是jasperreport源码中相关于你的代码出错的部分。
public void exportText(JRPrintText text, JRExporterGridCell gridCell, int col, int row) throws net.sf.jasperreports.engine.JRException
{
addMergeRegion(gridCell, col, row);

JRStyledText styledText = getStyledText(text);

if (styledText != null)
{
Colour forecolor = getWorkbookColour(text.getForecolor());
WritableFont cellFont = getLoadedFont(text, forecolor.getValue(), getTextLocale(text));

JRXlsAbstractExporter.TextAlignHolder alignment = getTextAlignHolder(text);
int horizontalAlignment = getHorizontalAlignment(alignment);
int verticalAlignment = getVerticalAlignment(alignment);
int rotation = getRotation(alignment);

Pattern mode = this.backgroundMode;
Colour backcolor = WHITE;

if (gridCell.getCellBackcolor() != null)
{
mode = Pattern.SOLID;
backcolor = getWorkbookColour(gridCell.getCellBackcolor());
}

StyleInfo baseStyle = new StyleInfo(this, mode, backcolor, horizontalAlignment, verticalAlignment, rotation, cellFont, gridCell);

String textStr = styledText.getText();

String href = null;
JRHyperlinkProducer customHandler = getCustomHandler(text);
if (customHandler == null);
switch (text.getHyperlinkType())
{
case 2:
href = text.getHyperlinkReference();
break;
case 1:
case 3:
case 4:
case 5:
case 6:
default:
break label224:

href = customHandler.getHyperlink(text);
}

try
{
if (href != null)
{
try
{
label224: URL url = new URL(href);
WritableHyperlink hyperlink = new WritableHyperlink(col, row, col, row, url);
this.sheet.addHyperlink(hyperlink);
}
catch (MalformedURLException e)
{
log.warn("Reference \"" + href + "\" could not be parsed as URL: " + e);
}
}
addCell(col, row, text, textStr, baseStyle);
}
catch (Exception e)
{
throw new net.sf.jasperreports.engine.JRException("Can't add cell.", e);
}
}
}

好好检查你的单元格包含URL等一类的东西
izard999 2010-06-02
  • 打赏
  • 举报
回复
jre. 虽然我没有过这个东西, 但是用jaboc操作word excel,是要往你的jdk的jre下面放一个叫jaboc.dll的文件, 要不然就搞不了
liqi4960710 2010-06-02
  • 打赏
  • 举报
回复
路过…………帮顶!!!

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧