不管你那个公式多复杂,它还是一字符串。把你的sourceCell.getCellFormula()打印出来看看是一个合法的公式吗。拿不准就粘贴的excel里面去看。
还有不应该是=大头的,是的话要去掉

解决方案 »

  1.   

    还是不行的话看这个
    http://poi.apache.org/hssf/formula.html
    看看你的公式是不是在Not yet supported列表里
      

  2.   

    貌似这个不行,生成的excel中那列还是显示公式,但如果你双击下excel的那列的话,那个公式就起作用了
    我也写过,他只支持一部分公司,复杂公司不支持
    不过你可以在那个excel模板中定义一些名词(菜单:插入--》名称--》定义)把这些公式中部分写成名称定义,这样的话你那个公式就可以简单许多了
    可以google下,那个excel的名称怎么定义
      

  3.   

    简单的公式比较容易处理,如
    cell.setCellFormula(formula); 这个formula可以为1+2+3之类的下面这个是excel中输入框的校验,其中的strFormula是定义的一个名称定义(里面定义了公式)
    HSSFDataValidation data_validation = new HSSFDataValidation(
    startRow, colNum, endRow, colNum); // 将第startRow行到endRow行colNum列的数据设置成下拉列表 data_validation
    .setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST);
    data_validation.setFirstFormula(strFormula);//
    data_validation.setSecondFormula(null);
    data_validation.setExplicitListFormula(true);
    data_validation.setSurppressDropDownArrow(false);
    data_validation.setEmptyCellAllowed(true);
    data_validation.setShowPromptBox(false);
    // data_validation.createErrorBox("无效输入!", "请选择下拉列表");
    // data_validation.createPromptBox("输入提示!", "请选择下拉列表里的内容!");
    sheet.addValidationData(data_validation); // 将该有效性对象加入当前sheet对象
      

  4.   

    我现在想做的操作是把这个公式复制下来粘贴在另外一行,
    =========================================================
    你想从java里面读取那个公司再写到另一个格子里?
    那你不如直接在ecxel里面把那个格子的状态中的公式直接复制过去来得方便
    读的话要看那公式具体复杂到什么程度了,超过jdk范围以外的(有那种根号,立方根,什么什么幂的)估计不行
    简单的估计你自己也能搞定,随便喷喷
      

  5.   

    我poi只用过填充数据,公式方面不敢妄谈
    不过,excel公式,我倒是做过另一个东西:java-cup+JFlex自己做Excel公式解析,实现了将近20多个公式吧
    题外话,题外话