有没有办法使用vb.net以编程方式将公式插入到csv文件中?

时间:2013-06-11 15:42:56

标签: vb.net csv

我需要将公式添加到已存在的CSV文件中。使用VB.Net可以做到这一点吗?

我的想法是我已经有了一个CSV文件,我需要在每个单元格中使用自定义公式填充一列。这必须以编程方式完成,因为这些文件是动态创建的。

有谁知道怎么做?感谢。

6 个答案:

答案 0 :(得分:24)

1,2,3,= SUM(A1:C1)

当我尝试时让我感到惊讶,但Excel会保留公式。

您甚至可以通过首先在屏幕上显示公式将公式导出为CSV。 (CTRL-`)

答案 1 :(得分:8)

您可以使用逗号分隔值通过文本文件将公式导入excel。请记住确保使用后缀.txt。

命名

然后进行导入。

我的示例导入(数据表,来自文本)

列1,列2,ResultColumn

1,2,= A2 + B2

导入并计算得很好

答案 2 :(得分:7)

虽然我坚持认为我的原始答案在技术上是正确的,但我已经得到了很多关于此的信息。显然流行的电子表格软件,如Microsoft Excel,Open Office,Libre Office Calc,将计算输入CSV文件的公式。但是,我仍然不建议依赖此功能。

原始答案:
CSV格式不支持公式。它是纯文本格式。

答案 3 :(得分:3)

您是否正在生成CSV文件?如果是这样,请考虑编写实际的Excel文件。 (我假设您正在导入Excel,因为您使用了术语“单元格”,这在CSV中没有意义。)

以下是有关如何操作的链接:Create Excel (.XLS and .XLSX) file from C#

如果你没有生成CSV,并且你想要的只是添加一个新的计算值(而不是一个随着单元格改变值而动态改变的公式),你可以通过阅读CSV文件,解析每一行足以获得公式所需的值,计算结果,并在将行输出到新文件之前将其(在逗号之后)附加到每一行。

答案 4 :(得分:2)

您可以在Excel中打开csv,然后将公式添加到Excel并保存回csv。您可以使用Microsoft Excel 11.0对象库执行此操作。然后

dim wb as Excel.Workbook
dim exApp as New Excel.Application
dim exSheet as Excel.Worksheet
dim rowNum as integer = 1

wb = System.Runtime.InteropServices.Marshal.BindToMoniker(pathAndFileNameOfCSV)
exApp = wb.Parent

exApp.DisplayAlerts = False
exApp.AlertBeforeOverwriting = False

exSheet = exApp.ActiveWorkbook.Sheets.Item(1)

'do your functions in a loop here i.e.
exSheet.Range("A" & rowNum).Value = "=SUM($A$1:$D$4)"
rowNum += 1

wb.Close (True) 'closes and saves

保存工作簿时,应将公式转换回关闭时的值。

答案 5 :(得分:1)

更具体地说,似乎Excel(我在这里工作的2013年)将导入并评估公式,只要该公式不包含任何逗号即可。其中包括分隔功能参数(例如=IF(A1=C1,D1-A1,D1+A1))的逗号。最终将其分为三个单元格,而公式导引器(=)则被视为文本=IF(A1=C1的一部分。

Excel的另一个怪癖是,如果您有一个完全由数字组成的字符串,则必须将其作为公式表示,以保留前导零。 “ 00012345”导入为12345,忽略引号。要以文本形式导入,.CSV文件必须以=“ 00012345”的形式显示。