Как добавить или прочитать формулы в Excel на C#

Добавление или чтение формул в Excel необходимо для автоматизации вычислений и улучшения анализа данных. Эта функциональность позволяет пользователям создавать динамические электронные таблицы, которые могут выполнять различные математические, статистические и логические операции.
В этой статье я расскажу о том, как добавлять и читать формулы в Excel с помощью C# и Free Spire.XLS for .NET.
- Добавление формул в Excel на C#
- Чтение формул в Excel на C#
Бесплатная библиотека для обработки файлов Excel
Free Spire.XLS for .NET — это мощная библиотека, позволяющая разработчикам создавать, читать, записывать и манипулировать файлами Excel в приложениях .NET. Она поддерживает широкий спектр функций Excel, включая добавление и чтение формул в листах Excel.
Библиотеку можно установить из NuGet с помощью следующей команды:
PM> Install-Package FreeSpire.XLS
Добавление формул в Excel на C#
В Spire.XLS, присвоив свойству CellRange.Formula строку, представляющую формулу в соответствии с синтаксисом формул Excel, вы можете задать формулу или функцию для ячейки. В следующем фрагменте кода показано, как добавлять различные виды формул в рабочие листы Excel на языке C#.
using Spire.Xls;
namespace AddFormulasAndFunctions
{
internal class Program
{
static void Main(string[] args)
{
// Инициализируем экземпляр класса Workbook
Workbook workbook = new Workbook();
// Получаем первый лист
Worksheet sheet = workbook.Worksheets[0];
// Объявляем две переменные: currentRow, currentFormula
int currentRow = 1;
string currentFormula;
// Добавляем текст на лист и устанавливаем стиль ячейки
sheet.Range[currentRow, 1].Text = «Тестовые данные:»;
sheet.Range[currentRow, 1].Style.Font.IsBold = true;
sheet.Range[currentRow, 1].Style.FillPattern = ExcelPatternType.Solid;
sheet.Range[currentRow, 1].Style.KnownColor = ExcelColors.LightGreen1;
sheet.Range[currentRow, 1].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium;
// Добавляем числовые данные на лист
sheet.Range[++currentRow, 1].NumberValue = 7.3;
sheet.Range[currentRow, 2].NumberValue = 5;
sheet.Range[currentRow, 3].NumberValue = 8.2;
sheet.Range[currentRow, 4].NumberValue = 4;
sheet.Range[currentRow, 5].NumberValue = 3;
sheet.Range[currentRow, 6].NumberValue = 11.3;
currentRow++;
// Добавляем текст на лист и устанавливаем стиль ячейки
sheet.Range[++currentRow, 1].Text = «Формулы»;
sheet.Range[currentRow, 2].Text = «Результаты»;
sheet.Range[currentRow, 1, currentRow, 2].Style.Font.IsBold = true;
sheet.Range[currentRow, 1, currentRow, 2].Style.KnownColor = ExcelColors.LightGreen1;
sheet.Range[currentRow, 1, currentRow, 2].Style.FillPattern = ExcelPatternType.Solid;
sheet.Range[currentRow, 1, currentRow, 2].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium;
// Добавляем текст и формулы на лист
currentFormula = "=\"Hello\"";
sheet.Range[++currentRow, 1].Text = «’» + currentFormula;
sheet.Range[currentRow, 2].Formula = currentFormula;
currentFormula = «=1+2+3+4+5-6-7+8-9»;
sheet.Range[++currentRow, 1].Text = «’» + currentFormula;
sheet.Range[currentRow, 2].Formula = currentFormula;
// Добавляем текст и функции на лист
// СРЕДНЕЕ
currentFormula = «=AVERAGE(Sheet1!$D$2:F$2)»;
sheet.Range[++currentRow, 1].Text = «’» + currentFormula;
sheet.Range[currentRow, 2].Formula = currentFormula;
// СЧЁТ
currentFormula = «=COUNT(3,5,8,10,2,34)»;
sheet.Range[++currentRow, 1].Text = «’» + currentFormula;
sheet.Range[currentRow, 2].Formula = currentFormula;
// И
currentFormula = «=AND(TRUE)»;
sheet.Range[currentRow, 1].Text = «’» + currentFormula;
sheet.Range[currentRow++, 2].Formula = currentFormula;
// СРЕДИНА
currentFormula = "=MID(\"world\",4,2)";
sheet.Range[currentRow, 1].Text = «’» + currentFormula;
sheet.Range[currentRow++, 2].Formula = currentFormula;
// Устанавливаем ширину 1-й, 2-й и 3-й колонок
sheet.SetColumnWidth(1, 32);
sheet.SetColumnWidth(2, 16);
sheet.SetColumnWidth(3, 16);
// Создаем стиль ячейки
CellStyle style = workbook.Styles.Add("Style");
// Устанавливаем горизонтальное выравнивание по левому краю
style.HorizontalAlignment = HorizontalAlignType.Left;
// Применяем стиль к листу
sheet.ApplyStyle(style);
// Сохраняем результирующий файл
workbook.SaveToFile("AddFormulasAndFunctions.xlsx", ExcelVersion.Version2016);
workbook.Dispose();
}
}
}
Чтение формул в Excel на C#
Чтобы проверить, содержит ли ячейка формулу или нет, можно использовать свойство CellRange.HasFormula. Если оно возвращает true, вы можете получить формулу ячейки с помощью свойства CellRange.Formula. Следующий код демонстрирует, как читать формулы в рабочем листе Excel с помощью C#.
using Spire.Xls;
using System.IO;
using System.Text;
namespace ReadFormulasAndFunctions
{
internal class Program
{
static void Main(string[] args)
{
// Инициализируем экземпляр класса Workbook
Workbook workbook = new Workbook();
// Загружаем файл Excel
workbook.LoadFromFile("AddFormulasAndFunctions.xlsx");
// Получаем первый лист
Worksheet sheet = workbook.Worksheets[0];
// Инициализируем экземпляр класса StringBuilder
StringBuilder sb = new StringBuilder();
// Получаем используемый диапазон листа
CellRange usedRange = sheet.AllocatedRange;
// Проходим по всем ячейкам в используемом диапазоне
foreach (CellRange cell in usedRange)
{
// Проверяем, содержит ли текущая ячейка формулу/функцию
if (cell.HasFormula)
{
// Получаем имя ячейки
string cellName = cell.RangeAddressLocal;
// Получаем формулу/функцию
string formula = cell.Formula;
// Добавляем имя ячейки и формулу/функцию в StringBuilder
sb.AppendLine(cellName + " имеет формулу: " + formula);
}
}
// Записываем содержимое StringBuilder в .txt файл
File.WriteAllText("ReadFormulasAndFunctions.txt", sb.ToString());
}
}
}
Заключение
В этой статье вы узнали, как добавлять и читать формулы в Excel на C#. Будучи продвинутой библиотекой для Excel, Free Spire.XLS for .NET поддерживает множество других функций, таких как:
Преобразование Excel в PDF на C#
Преобразование Excel в изображения на C#