Excel, EPPlus - чтение и запись файлов

Folt

Client
Регистрация
16.12.2016
Сообщения
71
Благодарностей
11
Баллы
8
Не понимаю как вставить формулу в excel и потом взять результат выполнения этой формулы, пример:
А1 | B1 | C1
10 | 20 | = A1+ B1

В С1 пишу формулу =А1 + В1 и хочу что бы Excel сразу посчитал мне её, а он не считает, а просто записывает формулу в ячейку, но если выбрать её и нажать Enter, то она применится.

Нужно в много потоков считать данные с помощью сложных формул встроенных в Excel

Кто то уже сталкивался с подобной проблемой?
В соседних ветках было решение перевести в CSV форма, но мне оно не подходит.
 

djaga

Client
Регистрация
26.04.2020
Сообщения
505
Благодарностей
1 052
Баллы
93
Не понимаю как вставить формулу в excel и потом взять результат выполнения этой формулы, пример:
А1 | B1 | C1
10 | 20 | = A1+ B1

В С1 пишу формулу =А1 + В1 и хочу что бы Excel сразу посчитал мне её, а он не считает, а просто записывает формулу в ячейку, но если выбрать её и нажать Enter, то она применится.

Нужно в много потоков считать данные с помощью сложных формул встроенных в Excel

Кто то уже сталкивался с подобной проблемой?
В соседних ветках было решение перевести в CSV форма, но мне оно не подходит.
Привет, чтобы вставить формулу, нужно использовать специальный метод. Просто так будет воспринимать как обычный текст.

1671461907496.png
3‑я формула вставлена нормально, с помощью worksheet.Cells["A4"].Formula = "SUM(A1:A2)"

Работа с формулами из кода:
var path = new FileInfo(project.Directory + @"\nameTab.xlsx");
var package = new ExcelPackage(path);
var worksheet = package.Workbook.Worksheets["Лист"];
// важно, цифры добавляются без кавычек. Если с кавычками, то нужно менять тип данных у клеток
worksheet.Cells[1, 1, 2, 1].Value = 1;        // добавить две единицы в две первые клетки
worksheet.Cells["A3"].Formula = "SUM(A1:A2)"; // вставить формулу
worksheet.Cells["A3"].Calculate(); // посчитать только одну ячейку
var str = worksheet.Cells["A3"].Value.ToString(); // получить результат

//worksheet.Calculate(); // полный пересчет листа
package.Save();
package.Dispose();
Важно:
Формулы нужно писать на английском языке и без знака "=". В данном случае SUM(A1:A2)
Если не делать Calculate, то Excel все равно будет распознавать правильно формулу, просто нельзя будет получить значение сразу в коде.
 
  • Спасибо
Реакции: Azat и Sho

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)