Есть ли способ программно вставить формулы в файл csv с помощью vb.net?

Мне нужно добавить формулы в файл CSV, который уже существует. Можно ли это сделать с помощью VB.Net?

Идея заключается в том, что у меня уже есть файл CSV, и мне нужен один столбец, который будет заполняться в каждой ячейке с помощью специальной формулы. Это необходимо сделать программно, потому что эти файлы создаются динамически.

Кто-нибудь знает, как это сделать? Спасибо.

Ответ 1

Хотя я и придерживаюсь того, что мой первоначальный ответ технически верен, я получил много отрицательных отзывов об этом. По-видимому, популярное программное обеспечение для работы с электронными таблицами, такое как Microsoft Excel, Open Office, Libre Office Calc, рассчитает формулы, которые вводятся в файл CSV. Однако я не рекомендовал бы полагаться на эту возможность.

Оригинальный ответ:
Формат CSV не поддерживает формулы. Это простой текстовый формат.

Ответ 2

1,2,3, = СУММ (А1: С1)

Удивил меня, когда я попробовал, но Excel сохранит формулу.

Вы даже можете экспортировать формулы в CSV, сначала отображая их на экране. (CTRL + `)

Ответ 3

Вы можете импортировать формулу в excel через текстовый файл, используя значения, разделенные запятыми. Просто не забудьте убедиться, что он указан с суффиксом .txt.

Затем выполните импорт.

Мой пример импорта (таблица данных, из текста)

Столбец1, Столбец2, ResultColumn

1,2, = A2 + B2

Он импортировал и вычислял только тонкие

Ответ 4

Вы создаете файл CSV? Если да, рассмотрите возможность написания фактического файла Excel. (Я предполагаю, что вы импортируете в Excel, так как вы использовали термин "ячейка", который не имеет смысла в CSV.)

Вот ссылка о том, как это сделать: Создать файл Excel (.XLS и .XLSX) с С#

Если вы не создаете CSV, и если вы хотите добавить новое вычисляемое значение (вместо формулы, которая будет динамически изменяться по мере изменения значений ячеек), вы можете сделать это достаточно легко, прочитав в CSV файл, разбор каждой строки достаточно для получения значений, необходимых для вашей формулы, вычисления результата и добавления его (после запятой) в каждую строку перед записью строки в новый файл.

Ответ 5

Вы можете открыть csv в Excel, а затем добавить формулы в 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

Сохранение книги должно преобразовать формулы обратно к значениям, когда они закрыты.

Ответ 6

Чтобы быть более конкретным, кажется, Excel (2013, где я работаю) будет импортировать и оценивать формулу, если формула не содержит запятых. Это включает запятые, которые разделяют параметры функции, такие как =IF(A1=C1,D1-A1,D1+A1). В результате разделение на три ячейки приводит к тому, что средство ввода формул (=) рассматривается как часть текста =IF(A1=C1.

Еще одна особенность Excel заключается в том, что если у вас есть строка, состоящая целиком из цифр, вы должны представить ее в виде формулы для сохранения лидирующих нулей. "00012345" импортируется как 12345, игнорируя кавычки. Чтобы импортировать как текст, файл .CSV должен представить это как = "00012345".