Проблемы с вычислением в Excel - PullRequest
1 голос
/ 19 сентября 2010

У меня есть документ .xlsx, в котором мне нужно импортировать некоторые значения в ячейки с определенными именами.Немногие из этих ячеек отформатированы как валюта, и значения, которые я импортирую в эти ячейки, имеют тип decimal, который я импортирую следующим образом:

cell.CellValue = new CellValue(value.ToString().Replace(",", "."));

В той же электронной таблице есть несколько ячеек, которые имеютформула, в которой используются импортированные мной валютные ячейки (например, я импортирую значение в ячейку H27 с определенным именем Total, а в поле I27 есть формула =Total*0.23).

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

Что нужно сделать для ячеек с формулами для автоматического вычисления значений после завершения импорта?

1 Ответ

1 голос
/ 26 сентября 2010

Я понял это.Ячейки с формулой имеют поля <CellFormula> внутри.Эти поля имеют атрибут bool CalculateCell, который, если задано значение true, говорит Excel вычислить формулу после открытия файла.Поскольку я не знаю заранее, на какие ячейки формулы влияют клетки, я управляю ими всеми так:

   foreach (var cell in sheetData.Descendants<CellFormula>())
      cell.CalculateCell = true;
...