如何取消计算机上的公式,评估公式并从单元格中删除公式(Evaluate formula and remove formula from cell)...

评估公式并从单元格中删除公式(Evaluate formula and remove formula from cell)

我想评估公式并从单元格中删除保留其值的公式。 如何使用Apache POI完成此操作?

下面是我的代码,我评估所有的公式。

FormulaEvaluator evaluator = template.getCreationHelper().createFormulaEvaluator();

int sheetCount = template.getNumberOfSheets();

for(int sheetIndex = 0; sheetIndex < sheetCount; sheetIndex ++) {

sheet = dfaTemplate.getSheetAt(sheetIndex);

for (Row r : sheet) {

for (Cell c : r) {

if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {

evaluator.evaluateFormulaCell(c);

}

}

}

}

I want to evaluate formula and the remove the formula from the cell keeping its values. How can this be done using Apache POI ?

Below is my code where I evaluate all the formulas.

FormulaEvaluator evaluator = template.getCreationHelper().createFormulaEvaluator();

int sheetCount = template.getNumberOfSheets();

for(int sheetIndex = 0; sheetIndex < sheetCount; sheetIndex ++) {

sheet = dfaTemplate.getSheetAt(sheetIndex);

for (Row r : sheet) {

for (Cell c : r) {

if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {

evaluator.evaluateFormulaCell(c);

}

}

}

}

原文:https://stackoverflow.com/questions/37276384

2019-12-11 10:29

满意答案

您应该使用evaluator.evaluateInCell(cell)而不是evaluator.evaluateFormulaCell(c) 。 如果单元格包含公式,则evaluateInCell将计算公式,并将公式结果放回单元格中,代替旧公式。

You should use evaluator.evaluateInCell(cell) instead of evaluator.evaluateFormulaCell(c). If the cell contains a formula, evaluateInCell evaluates the formula, and puts the formula result back into the cell, in place of the old formula.

相关问答

循环并将公式放入单元格公式中。 这里的字符串是固定的。 commandstring = "{=INDEX(" & firstArgument & ",MATCH(1,(" & secondArgument & "=" & condition1 & ")*(" & thirdArgument & "=" & condition2 & ")*(" & patid1 & "=" & condition3 & "),0))}"

Dim lRow As Long

Dim ws As Excel.Wor...

就我所知,无法从公式中引用单元格。 数学公式编辑器不了解OO Calc。 但是,您可以根据需要使用宏创建新公式。 按照以下步骤使其工作: 把你想插入到单元格的数学公式。 例如,将一些数字放到单元格A1,A2,A3,并将以下内容放到单元格C3中: =CONCATENATE("{";A1;"}";"over {";A2;" `+` ";A3;"}";" `=` ";A4).

这会在C3中产生类似于{1} over {2 `+` 3} `= 从下面的代码创建一个宏。 在OO Calc中,选择 Tool...

使用间接功能 : 如果放置地址“Test!C:C”列的单元格为A1,则使用: =INDIRECT(A1)

如果工作表从未更改过,您只想引用该列。 所以在A1你只想放“C”: =INDIRECT("Test!" & A1 & ":" & A1)

间接允许您输入一个字符串,然后将其用作参考。 INDIRECT()函数有一个主要的缺点,它是不稳定的。 这意味着它将在每次excel计算时计算,而不仅仅是在参考单元格改变时。 因此,根据公式的数量,它将减慢计算时间。 Use the Indirect F...

错误可能来自您当前的数据,分别来自工作表的布局。 我建议你在分配公式之前检查listO.Range(i, j).FormulaR1C1的内容。 我遇到了范围内已经有错误数据的情况,然后奇怪的是,我不知道为什么,我不能指定新的公式。 如果是这种情况 - 尝试清除范围的值,然后分配公式: listO.Range(i, j).FormulaR1C1 = ""

listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)

The error might be c...

您应该使用evaluator.evaluateInCell(cell)而不是evaluator.evaluateFormulaCell(c) 。 如果单元格包含公式,则evaluateInCell将计算公式,并将公式结果放回单元格中,代替旧公式。 有关详细信息,请参阅evaluator.evaluateInCell(cell) 。 You should use evaluator.evaluateInCell(cell) instead of evaluator.evaluateFormulaCe...

像这样的东西,其中包括公式存在的测试 If Range("A5").HasFormula Then Range("A5").Formula = Range("A5").Formula & "+1"

更新:要做到这一点很快,大量的细胞选择自动更新公式,你应该使用变体数组 更改strAdd = "+1"作为后缀追加 'Press Alt + F11 to open the Visual Basic Editor (VBE)

'From the Menu, choose Insert-Module.

...

在Column C输入此公式, =IF(OR(AND(A1="ABC",B1<100),AND(A1="DEF",B1<150),AND(A1="GHI",B1<200)),"Pass","Fail")

Enter this formula in Column C, =IF(OR(AND(A1="ABC",B1<100),AND(A1="DEF",B1<150),AND(A1="GHI",B1<200)),"Pass","Fail")

您可以使用总和公式,并用逗号分隔所有公式以添加每个等式: =Sum((J11-J10)*24, (J13-J12)*24, nextformula, nextformula, etc.)

You could use a sum formula and have all your formulas separated by commas to add each equation: =Sum((J11-J10)*24, (J13-J12)*24, nextformula, nextformula, ...

我有一些你可以玩的几乎正常工作的代码。 只要单个单元格在公式中,它就会起作用 - 因此它不适用于A1:C1但不适用于A1,B1,C1 - 所以没有VLOOKUPS或MATCH。 只是简单的公式。 代码的主要部分归功于Bill Manville。 有一个Stackoverflow链接: 在Excel和Excel中通过VBA的第一层先例单元格的地址 原始代码的几个链接: http://www.vbaexpress.com/forum/showthread.php?19348-Solved-Splitt...

谷歌应用程序脚本函数getFormula()可能会得心应手: getFormula() 输出。 串 返回范围左上角单元格的公式(A1表示法),如果单元格为空或不包含公式,则返回空字符串。 请尝试: if (range.getFormula().substring(0, 1) === '='

{

// there is a formula

}

substring(0,1)获取左符号: https://www.w3schools.com/jsref/jsref_substring.asp goo...

相关文章

我们现有的Hadoop集群已经运行了一段时间了 由于集群中的服务器分布在2个不同的机房,受跨机房带宽的

...

cell.setHyperlink(link)

好吧..先看图~ 图一, 初始化的值, 是显示的汉字"是" 图二, 正在编

...

在行内有三列,一列:出库数量,一列:成本单价,一列为:成本金额。 我在行内改了出库数量,怎么把计算的

...

setCellValue(boolean value)设置单元格一个布尔值

怎样用jxl解析多级表头的excel文件,确定某个单元格cell对应的标题?

原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板 一、主要实现以下功能: 1、用鼠标

...

<table> 表格: cellspacing: 外边距 => 单元格和

...

最新问答

更新:从1.4开始,Spring Boot支持Thymeleaf 3,但版本2仍然是默认设置。 有关如何使用Thymeleaf 3的详细信息,请参阅文档 。 Spring Boot 1.3及更早版本不支持Thymeleaf 3.您需要为Thymeleaf禁用Boot的自动配置并手动配置它。 您可以使用@SpringBootApplication上的exclude属性禁用自动配置: @SpringBootApplication(exclude=org.springframework.boot.au

不,这是不可能的。 您从GCM获得的注册ID与特定设备上的应用程序相关联。 如果您尝试从服务器执行注册,GCM如何知道识别注册ID所绑定的设备? No, it's not possible. The Registration ID that you get from GCM is tied to an application on a specific device. If you would try to perform the registration from the server, ho

是的,当使用kafka-topics.sh工具删除主题时,您可以使用类似于正则表达式的表达式: 例如,要删除以giorgos-开头的所有主题: ./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-.* 使用管理API,您也可以一次删除多个主题,请参阅AdminClient.deleteTopics Yes you can use regex-like expressions when deletin

摆脱“classpath”前缀: .getBundle("/properties/custom") “classpath”前缀不是一个标准,它是由一些像spring这样的框架定义的。 Get rid of the "classpath" prefix.: .getBundle("/properties/custom") The "classpath" prefix is not a standard, it is defined by some frameworks like spring.

溢出:隐藏。 在下面的CSS中添加: #block-brainstorm-theme-main-menu 一旦你从这里删除溢出属性,并删除显示:无。 从 #block-brainstorm-theme-main-menu ul ul 子菜单将显示。 但是你必须在css和js上进行适当的外观和感觉。 相反,我建议为此使用一些jquery.Also也可以使用像Nice菜单或Superfish菜单一样的模块。 让我知道我是否可以帮助你。 Overflow: hidden. is added in

1)您在java进程中看到的变量是从您启动java进程的进程继承的变量。 即,如果从shell启动它,它应该具有与shell相同的变量。 您需要在启动Java应用程序之前调查实际设置的变量,以及为什么未在该上下文中设置您期望的变量。 要回答第2部分,是的,将在ProcessBuilder.environment()使用环境启动该过程。 您可以简单地将事物添加到ProcessBuilder.environment()返回的映射中,这将扩展运行时环境: ProcessBuilder pb = new

(('sssss',), ('root',)) 和 ('sssss', 'root') 表示的东西不一样。 'sssss', 有逗号表示的是 tuple, 而'sssss'只是字符串,所以(('sssss',), ('root',)) 是tuple 组成的tuple,('sssss', 'root') 是字符串组成的tuple。 (('sssss',), ('root',)) 转成 (('sssss'), ('root')) t=(('sssss',), ('root',)) result=(j

箱形图不绘制均值或方差。 您实际上需要完整的排名数据来绘制正确的箱线图,因为数量是中位数,四分位数和1.5倍IRQ内的关闭数据点的实际值加上超出该范围的所有数据点(异常值)。 对于大型数据集来说,这通常不是一个好主意(因为根据定义,您有数百万个异常值)。 也就是说,您可以按照您想要的方式生成基本摘要,并使用bxp绘制它们 - 请参阅R中的?bxp 。如果不是上述内容,请确保说明您正在绘制的数量。 Boxplots do not plot mean or variance. You actuall

看起来hadoop正在使用jets3t库进行S3访问。 您可以使用此博客中描述的配置来访问eucalyptus,但请注意,对于版本4,路径为“/ services / objectstorage”而不是“/ services / Walrus”。 It looks like hadoop is using the jets3t library for S3 access. You might be able to use the configuration described in this b

您所看到的是内存泄漏 - AsyncTask保留对其声明的Activity的引用,并阻止Android运行时垃圾收集它。 回答你的问题: 无法使用命令停止AsyncTask。 您可以请求在onDestroy()中取消它,但它仍然只在执行了doInBackground()方法后执行,在您的情况下将是Runnable。 您可以选择使用静态嵌套的AsyncTask,它不会保存对它所驻留的Activity的引用 - 需要注意的是,您将无法从Activity中引用任何内容,但这对您的案例来说不应该是一个大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值