2011-01-19 5 views
6

В чем разница между этими двумя фрагментами Office Open XML?В чем разница между <c t="str"> и <c><is> в Office Open XML?

<c r="A2" t="str"> 
    <v>btyler</v> 
</c> 

и

<c r="B2"> 
    <is><t>btyler</t></is> 
</c>  

примечание: второй пример я создал вручную на основе спецификации, первый из реальной книги Excel.

Оба кажутся действительными и в значительной степени идентичными по спецификации, поэтому мне интересно, почему существует t="str", когда <is>, похоже, делает то же самое. Когда Excel предпочитает использовать один над другим?

ответ

8

В соответствии с документацией на 18.18.11 ST_CellType:

ул (строка) ячейку, содержащую формулу строку.

Таким образом, вы использовали бы только свой первый пример, если бы формула находилась в элементе <x:v>.

Второй используется для встроенных строк, а элемент <x:c> должен иметь атрибут t'inlineStr'. Это будет только богатый текст, который будет выводиться и не храниться в таблице sharedstring.

Таким образом, ваш первый из них будет действительным, как это:

<x:c r="C6" s="1" vm="15" t="str"> 
    <x:f>CUBEVALUE("xlextdat9 Adventure Works",C$5,$A6)</x:f> 
    <x:v>2838512.355</x:v> 
</x:c> 

Ваш второй один будет действительным, как это:

<x:c r="B2" t="inlineStr"> 
    <is><t>btyler</t></is> 
</c>