问题描述
1;;2.74;0
=A1+C1;=A2;=C1
将公式转换为数字的最佳方法是,如下所示
1;;2.74;0
3.74;3.74;2.74
?
我知道的唯一方法是使用csv.reader
作为列表列表来读取它,然后遍历每个元素。但是似乎必须有一个更简单的方法。
解决方法
CSV格式不支持公式。这是纯文本格式。 尽管某些流行的软件(例如MS Excel)将计算公式。我不知道允许这样做的解析器。但是,您可以尝试编写自己的解析器。能否成功取决于您希望在CSV中使用哪种高级公式。
,需要动态解析包含Excel变量的字符串公式。在此处使用esproc在Excel外部执行类似Excel的公式。你可以尝试一下。有关更多详细信息,请参见http://c.raqsoft.com/article/1607073714932
A1=""
A2=""
A3=file("D:\data.csv").import(;,";")
A4=A3(1).array().(eval(char(64+#)/ "1="/ if(~==null,"null",~))) // Process data in the first row
A5=A3(2).array().(eval(char(64+#) / "2" / if(~==null,"=null",~))) //Process the second row
A6=create(A,B,C,D).record([A1:D2]) //Get the result
A7=file("D:\result.csv").export(A6;";")