Как проанализировать значения формул в виде текста в Excel с помощью C#

#c# #excel #worksheet-function

#c# #excel #Рабочий лист-функция

Вопрос:

Мне нужно разобрать некоторые данные из файла MS Excel.

Ячейки, из которых мне нужно извлечь данные, содержат текст формулы в качестве значения.

Например:

 Sheet 2 [A1].Value = "$50"
Sheet 1 [A1].Formula = "='Sheet2'!A1"
  

Когда я беру значение для Sheet1 [A1] , я получаю ='Sheet2'!A1 , не $50 .

Есть ли способ получить текстовое значение после вычисления формулы из Sheet1[A1] с помощью C #?

Ответ №1:

Вот что я получил с помощью Microsoft.Офис.Взаимодействие.Excel, как упоминал Rup

 using Microsoft.Office.Interop.Excel;

string fileName = @"C:TestSheet.xls";
Application xlApp = new Application();
Workbook book = xlApp.Workbooks.Open(fileName);
Worksheet sheet = xlApp.Worksheets[1];
Range range = sheet.get_Range("A1");
Console.WriteLine(range.get_Value(XlRangeValueDataType.xlRangeValueDefault));
  

Ответ №2:

Я не уверен, какой член диапазона обрабатывает этот набор, но я бы предположил, что это соответствует значению 2, а не общему вводу таким же образом, как в электронной таблице. Попробуйте:

 Sheet1[A1].Formula = "='Sheet2'!A1";
Console.Out.WriteLine(Sheet1[A1].Value2);
  

явно задать это как forumula. Возможно, вам также потребуется запустить пересчет, но я бы не ожидал.