Вычислить формулы
Добавление формул и расчет результатов
Aspose.Cells имеет встроенный механизм расчета формул. Он не только может пересчитывать формулы, импортированные из шаблонов конструктора, но также поддерживает вычисление результатов формул, добавленных во время выполнения.
Aspose.Cells поддерживает большинство формул и функций, входящих в состав Microsoft Excel(Читатьсписок функций, поддерживаемых расчетным движком). Эти функции можно использовать через API или электронные таблицы конструктора. Aspose.Cells поддерживает огромный набор математических, строковых, логических, дат/времени, статистических, баз данных, поисковых и справочных формул.
ИспользоватьФормула собственность илиУстановитьФормулу(…) методыCellкласс, чтобы добавить формулу в ячейку. При применении формулы всегда начинайте строку со знака равенства (=), как при создании формулы в Microsoft Excel, и используйте запятую (,) для разделения параметров функции.
Чтобы вычислить результаты формул, пользователь может вызватьВычислитьФормула методРабочая тетрадькласс, который обрабатывает все формулы, встроенные в файл Excel. Или пользователь может вызватьВычислитьФормула методрабочий лист класс, который обрабатывает все формулы, встроенные в лист. Или пользователь также может вызватьРассчитать методCellкласс, который обрабатывает формулу одного Cell:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Adding a new worksheet to the Excel object | |
int sheetIndex = workbook.Worksheets.Add(); | |
// Obtaining the reference of the newly added worksheet by passing its sheet index | |
Worksheet worksheet = workbook.Worksheets[sheetIndex]; | |
// Adding a value to "A1" cell | |
worksheet.Cells["A1"].PutValue(1); | |
// Adding a value to "A2" cell | |
worksheet.Cells["A2"].PutValue(2); | |
// Adding a value to "A3" cell | |
worksheet.Cells["A3"].PutValue(3); | |
// Adding a SUM formula to "A4" cell | |
worksheet.Cells["A4"].Formula = "=SUM(A1:A3)"; | |
// Calculating the results of formulas | |
workbook.CalculateFormula(); | |
// Get the calculated value of the cell | |
string value = worksheet.Cells["A4"].Value.ToString(); | |
// Saving the Excel file | |
workbook.Save(dataDir + "output.xls"); |
Важно знать
Прямой расчет формулы
Aspose.Cells имеет встроенный механизм расчета формул. Помимо вычисления формул, импортированных из файла конструктора, Aspose.Cells может напрямую вычислять результаты формул.
Иногда вам нужно вычислить результаты формулы напрямую, не добавляя их на лист. Значения ячеек, используемых в формуле, уже существуют на рабочем листе, и все, что вам нужно, это найти результат этих значений на основе какой-либо формулы Excel Microsoft без добавления формулы на рабочий лист.
Вы можете использовать API-интерфейсы механизма расчета формул Aspose.Cells дляРабочий лист крассчитать результаты таких формул без добавления их на лист:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a workbook | |
Workbook workbook = new Workbook(); | |
// Access first worksheet | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Put 20 in cell A1 | |
Cell cellA1 = worksheet.Cells["A1"]; | |
cellA1.PutValue(20); | |
// Put 30 in cell A2 | |
Cell cellA2 = worksheet.Cells["A2"]; | |
cellA2.PutValue(30); | |
// Calculate the Sum of A1 and A2 | |
var results = worksheet.CalculateFormula("=Sum(A1:A2)"); | |
// Print the output | |
System.Console.WriteLine("Value of A1: " + cellA1.StringValue); | |
System.Console.WriteLine("Value of A2: " + cellA2.StringValue); | |
System.Console.WriteLine("Result of Sum(A1:A2): " + results.ToString()); |
Вышеприведенный код выводит следующий результат:
Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0
Многократное вычисление формул
Когда в рабочей книге много формул и пользователю необходимо многократно их вычислять, изменяя только небольшую их часть, для повышения производительности может быть полезно включить цепочку вычисления формул:FormulaSettings.EnableCalculationChain.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Load the template workbook | |
Workbook workbook = new Workbook(dataDir + "book1.xls"); | |
// Print the time before formula calculation | |
Console.WriteLine(DateTime.Now); | |
// Set the CreateCalcChain as tue | |
workbook.Settings.FormulaSettings.EnableCalculationChain = true; | |
// Calculate the workbook formulas | |
workbook.CalculateFormula(); | |
// Print the time after formula calculation | |
Console.WriteLine(DateTime.Now); | |
//change the value of one cell | |
workbook.Worksheets[0].Cells["A1"].PutValue("newvalue"); | |
//re-calculate those formulas which depend on cell A1 | |
workbook.CalculateFormula(); |
Важно знать
Предварительные темы
- Добавить Cells в Microsoft Окно просмотра формулы Excel
- Расчет функции IFNA с использованием Aspose.Cells
- Вычисление формулы массива таблиц данных
- Вычисление функций Excel 2016 MINIFS и MAXIFS
- Уменьшите время расчета Cell. Метод расчета
- Обнаружение циклической ссылки
- Прямой расчет пользовательской функции без записи ее на листе
- Реализовать пользовательский механизм расчета, чтобы расширить механизм расчета по умолчанию Aspose.Cells.
- Прервать или отменить расчет формулы рабочей книги
- Возврат диапазона значений с помощью AbstractCalculationEngine
- Возврат диапазона значений с помощью ICustomFunction
- Настройка режима вычисления формулы в книге
- Использование функции FormulaText в Aspose.Cells
- Использование функции ICustomFunction