2016-01-25 6 views
0

Я читаю электронную таблицу в C# с использованием библиотеки OpenXML, и я разбор значения Cell объекта с использованием InnerText propierty, который возвращает строку или null.читает формулу из таблицы с OpenXML

Когда в Cell присутствует формула, я необработанный текст, присутствующий в таблице, как этот:

= Лист1 A1Content

, который состоит из: бывшей формулы (Лист1! A1) + строка результата (Content) , и это происходит также с основами вроде: = 2 + 24

Как получить только результат формулы?

+1

вы пробовали Google Поиск 'C# Чтение Формулы из таблицы с OpenXml' http://openxmldeveloper.org/blog/ b/openxmldeveloper/archive/2012/11/04/formula-processing-in-spreadsheetml.aspx – MethodMan

+0

Я искал, но я не нашел эту ссылку. Я начну оттуда. – Ozeta

+0

@MethodMan Я прочитал эту страницу, но я не нашел ничего полезного. Я понял структуру формулы, но нет ничего о ее прочтении, поскольку я это понял – Ozeta

ответ

1

Из http://officeopenxml.com/ документации:

Для формулы, формула сама по себе хранится в пределах ф элемента в качестве дочернего элемента с. Следуя формуле, это фактическое вычисленное значение внутри элемента.

Существует также пример, это Open XML для одной ячейки:

<c r="B9" s="3" t="str"> 
    <f>SUM(B2:B8)</f> 
    <v>2105</v> 
</c> 

Таким образом, в Cell элемент, есть ребенок для Formula и дочерний элемент для CellValue. Свойство InnerText ячейки является конкатенированной стоимостью этих двух в вашем случае. Если у вас уже есть ячейка, которую нужна вы можете сделать следующее:.?

static string GetValue(Cell cell) 
{ 
    //The ? operator to make sure the 'CellValue' element exists, otherwise return null 
    return cell.GetFirstChild<CellValue>()?.Text; 
} 
+0

Привет, Александр, может быть, вы имеете в виду элемент Cell? – Ozeta

+0

@ Озета да, мой плохой, отредактировал его –

 Смежные вопросы

  • Нет связанных вопросов^_^