16

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

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

有谁知道如何做到这一点?谢谢。

4

6 回答 6

35

1,2,3,=总和(A1:C1)

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

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

于 2016-08-29T19:09:18.293 回答
13

虽然我坚持认为我的原始答案在技术上是正确的,但我一直对此表示反对。显然,流行的电子表格软件,如 Microsoft Excel、Open Office、Libre Office Calc 将计算输入到 CSV 文件中的公式。但是,我仍然不建议依赖此功能。

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

于 2013-06-11T15:46:02.757 回答
9

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

然后进行导入。

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

第 1 列、第 2 列、结果列

1,2,=A2+B2

它导入并计算得很好

于 2014-12-08T17:22:57.607 回答
3

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

这是有关如何执行此操作的链接: 从 C# 创建 Excel (.XLS 和 .XLSX) 文件

如果您没有生成 CSV,并且您只想添加一个新的计算值(而不是随着单元格更改值而动态更改的公式),您可以通过读取 CSV 文件轻松完成此操作,解析每一行以获得公式所需的值,计算结果,并将其(在逗号之后)附加到每一行,然后再将行写入新文件。

于 2013-06-11T15:55:38.457 回答
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

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

于 2013-06-11T19:14:17.280 回答
1

在 Excel 中,要使用逗号导入公式,公式必须用双引号括起来,以防止公式跨单元格传播。例如:

2,4,6,13,=sum(A1:C1),"=if(A1=C1,D1-A1,D1+A1)"

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

于 2019-08-14T17:33:08.800 回答