К сожалению, я не уверен, что именно вы спрашиваете, не могли бы вы попытаться переформулировать свой вопрос, чтобы его было легче понять?
Тем не менее, вот некоторая информация, которая, я надеюсь, выВы найдете полезное.
Чтобы выполнить итерацию по всем ячейкам, вы должны использовать одну из следующих команд:
1.
foreach (ExcelRow row in workSheet.Rows)
{
foreach (ExcelCell cell in row.AllocatedCells)
{
var value = cell.Value;
// ...
}
}
2.
for (CellRangeEnumerator enumerator = workSheet.Cells.GetReadEnumerator(); enumerator.MoveNext(); )
{
ExcelCell cell = enumerator.Current;
var value = cell.Value;
// ...
}
3.
for (int r = 0, rCount = workSheet.Rows.Count; r < rCount; ++r)
{
for (int c = 0, cCount = workSheet.CalculateMaxUsedColumns(); c < cCount; ++c)
{
var value = workSheet.Cells[r, c].Value;
// ...
}
}
Я полагаю, что все они будут иметь примерно одинаковые характеристики.
Однако, в зависимости от содержимого электронной таблицы, последняя может оказаться немного медленнее.Это потому, что он не выполняет итерацию исключительно через выделенные ячейки.
Так, например, допустим, у вас есть электронная таблица, которая имеет 2 строки.Первая строка пуста, у нее нет данных, а вторая строка имеет 3 ячейки.Теперь, если вы используете подход 1. или 2. тогда вы будете перебирать только те 3 ячейки во втором ряду, но если вы используете подход 3., то вы будете перебирать 3 ячейки в первом ряду (которые ранее не были выделены, а теперьэто потому, что мы получили к ним доступ), а затем через 3 ячейки во второй строке.
Теперь, что касается расчета, обратите внимание, что при сохранении файла в каком-либо приложении Excel он сохраняет последние рассчитанные значения формулы в нем.В этом случае вам не нужно вызывать метод Calculate, потому что у вас уже есть необходимые значения в ячейках.
Вы должны вызывать метод Calculate, когда вам нужно обновить, пересчитать формулы в вашей электронной таблице, например, после того, как у вас естьдобавлены или изменены некоторые значения ячеек.
Последнее, что касается вашего вопроса, его трудно понять, но тем не менее:
Могу ли я получить рассчитанные значения?
Да, эта строка кода var value = workSheet.Cells[i,j].Value;
должна дать вам вычисленное значение, потому что вы использовали метод Calculate перед ним.Однако, если у вас есть формулы, которые в настоящее время не поддерживаются механизмом вычислений GemBox.Spreadsheet, он не сможет рассчитать значение.Вы можете найти список поддерживаемых в настоящее время функций формул Excel здесь .
или вы, ребята, знаете функцию предварительного расчета или Получить больше скорости?
Я не знаю, что означает «функция предварительного расчета», и для скорости, пожалуйста, обратитесь к первой части этого ответа.