span8
span4
大家好,
由于一些程序的开发的一部分,我已创建其中i插入公式使用AttributeManager和Cell.Formula命名约定一个多标签Excel文件。由于我使用(动态我想)的VLOOKUPS的性质,我不能做这种计算在FME的算术编辑器。
打开excel工作表所示的值I DO希望,通过在细胞中的公式给定。然而,当我现在来阅读本片在我的一个例程,这些值都被示出为<缺失>。有没有人遇到过这样或有什么想法?
感谢所有,亲切的问候,
插口
更新:当我进入Excel文档,只按保存并关闭,该文件现在读取正确。因为我需要这是在许多不同的文件的自动化系统,我无法对这些程序产生的每个Excel文件来这样做。
谢谢大家对您的建议和提示。
我试图通过建立一个自定义的变压器并结合循环,实现内FME的VLOOKUP过程。这我不能去工作,很慢,因为上面是需要100次迭代跑。
我使用的文本编写,要求每个制作的Excel文件,并模拟使用开放FME输出.vbs文件并保存它实现我的解决方案。脚本的主体,是通过将属性值来实现的。
然后我用一个表面建模和WorkspaceRunners运行第一程序,调用.vbs脚本,然后运行第二个程序。它似乎相当有效的,如果有点令人费解!
再次感谢。
Excel的性质意味着一个单元格的值,其化学式,是彼此独立的两个属性。细胞不会得到一个值,相当于式,除非Excel首先计算它。这意味着,如果你更新一个Excel会话的Excel外,通常任何公式的单元格将不重新计算,除非Excel打开它。这是由设计,以保持数据和公式(和计算处理开销)是分开的。
有可能有办法推出的手动打开Excel的应用外,并呼吁有发言权PythonCaller的Worksheet.Calculate方法。
然而,这将是令人惊讶的,如果计算不能在FME做呢?VLOOKUP主要引用查找表,并从中获取的值。这就好比FeatureJoiner和InlineQuerier变压器的核心功能。
如果相同的字段/属性既是计算值和值使用的加入,那么最好的办法是使用InlineQuerier
InlineQuerier使用SQLite的引擎,支持递归公用表表达式(CTE的)。我们所能做的是什么重写Excel的是做,而只是使用SQL语法,而不是Excel的语法。
因此,一些示例表:事实表
查找表
同时发送的事实表和查找表作为输入InlineQuerier,并以此作为在InlineQuerier SQL表达式返回一个结果:
WITH RECURSIVE Vw_Data AS(SELECT A.rowid AS ROWNUMBER,A.rowid + 1 AS NextRowNumber,A.ValueToLookup作为RawValue,A.ValueToLookup,B.ReturnedValue FROM FactTable甲INNER JOIN LookupTable中乙ON(A.ValueToLookup = B.LookupField)WHERE A.rowid = 1 UNION ALL SELECT A.rowID AS ROWNUMBER,A.rowid + 1 AS NextRowNumber,A.ValueToLookup AS RawValue,C.ReturnedValue AS ValueToLookup,B.ReturnedValue FROM FactTable甲INNER JOIN Vw_Data C ON(A.rowid= C.NextRowNumber)INNER JOIN LookupTable中乙ON(C.ReturnedValue = B.LookupField))SELECT ROWNUMBER,NextRowNumber,RawValue,ValueToLookup,ReturnedValue FROM Vw_Data
这是否相同的逻辑处理步骤是什么做的Excel通过迭代下来的每一行数据,计算值,然后使用该值与加入对数据的下一行的值
©2020安全亚搏在线软件公司|法律