我将展示一些人为的例子,请耐心等待。应用函数后保持单元格文本格式化
我们的产品利用CSV文件创建过渡数据,在Excel用户界面和Java程序之间发送数据,并将其转移到SQL后端。我们有一个VBA脚本,可按以下顺序处理所有Excel工作:
在单个Excel文档中将所有8个CSV文件加载到8个工作表中。然后通过数据执行以下操作的批次迭代:
'Loop over data:
Dim r As Range
...
r.NumberFormat = "General"
r.Formula = r.Formula
'End loop
这会导致整个片材与来自CSV数据来填充,用数目的细胞具有文本的外观和Excel公式保持未计算的。运行r.Formula = r.Formula触发所有函数进行正确评估。唯一的问题是数字格式。
CSV文件有时包含嵌套的CSV。例如,单个单元格可能包含“1,2,3,15,654”这些单元格始终显示为文本。但是,有一个边缘情况,其中单元格可能是漂亮的打印数字,例如“10,456,345”Excel将在评估所有函数后将这些数字转换为数字单元格,并删除所有逗号。尽管文档中的20,000行左右是正确的,但这影响了4行左右,从而打破了整个系统。
有没有办法触发Excel来评估从CSV的功能,而不必完全从VBA中更改单元格格式?由于Java CSV生成器由不同的部门处理,因此将格式从CSV更改为SYLK不是一种选择。
是否指CSV文件包含Excel公式(例如,“= R1C1”或“= A1”)? – assylias 2012-02-14 16:47:03
您是否尝试过使用'r.NumberFormat =“@”'将单元格定义为文本? – 2012-02-14 16:52:12
@assylias是的,它包含Excel公式。 Java程序根据需要生成正确的公式,并在正确的位置生成CSV文件。 r.Formulas = r.Formulas触发它们进行评估。 – Reivax 2012-02-14 18:02:01