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)
这个问题我看了代码感觉没问题。。求救啊!
谢谢啊,能帮我解决这个问题我一定给高分。。

解决方案 »

  1.   

    jre.  虽然我没有过这个东西, 但是用jaboc操作word excel,是要往你的jdk的jre下面放一个叫jaboc.dll的文件, 要不然就搞不了
      

  2.   

    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等一类的东西