不管你那个公式多复杂,它还是一字符串。把你的sourceCell.getCellFormula()打印出来看看是一个合法的公式吗。拿不准就粘贴的excel里面去看。
还有不应该是=大头的,是的话要去掉
还有不应该是=大头的,是的话要去掉
解决方案 »
- ERROR: Access denied for user 'root'@'localhost' (using password: YES)
- 将java工程打成jar包,再执行
- spring jmx InvalidInvocationException异常,达人帮忙看看
- 使用xfire做web server,当客户端调用方法时就出(500)Internal Servec,请大哥大姐帮个忙
- 引个讨论:如何回答面试常见问题之“你熟悉servlet嘛?”
- Hibernate用户自定义值类型怎么用
- [求教]如果使用没主键的表,hibernate怎么才可以?
- servletContext为什么无法在JSP中取得当前的Context名称
- 用Jbuilder开发的软件,可不可以做成exe运行呢?
- 关于xml转换的问题!!!
- 关于struts的ActionForm与checkbox的问题
- 如何在hibernate+spring的工程中利用配置文件生成数据库??
http://poi.apache.org/hssf/formula.html
看看你的公式是不是在Not yet supported列表里
我也写过,他只支持一部分公司,复杂公司不支持
不过你可以在那个excel模板中定义一些名词(菜单:插入--》名称--》定义)把这些公式中部分写成名称定义,这样的话你那个公式就可以简单许多了
可以google下,那个excel的名称怎么定义
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对象
=========================================================
你想从java里面读取那个公司再写到另一个格子里?
那你不如直接在ecxel里面把那个格子的状态中的公式直接复制过去来得方便
读的话要看那公式具体复杂到什么程度了,超过jdk范围以外的(有那种根号,立方根,什么什么幂的)估计不行
简单的估计你自己也能搞定,随便喷喷
不过,excel公式,我倒是做过另一个东西:java-cup+JFlex自己做Excel公式解析,实现了将近20多个公式吧
题外话,题外话