#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. Возможно, вам также потребуется запустить пересчет, но я бы не ожидал.