2011-01-19 10 views
6

Qual è la differenza tra questi due frammenti di Office Open XML?Qual è la differenza tra <c t="str"> e <c><is> in Office Open XML?

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

e

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

nota: Il secondo campione ho creato manualmente in base alla specifica, il primo da una cartella di lavoro effettivo di Excel.

Entrambi sembrano validi e praticamente identico in base alle specifiche, quindi mi chiedo il motivo per cui non v'è t="str" quando <is> fa apparentemente la stessa cosa. Quando Excel sceglie di usarne uno sull'altro?

risposta

8

Secondo la documentazione in 18.18.11 ST_CellType:

str (String) cella contenente una stringa formula.

Quindi si utilizzerà il primo esempio solo se una formula era nell'elemento <x:v>.

Il secondo è utilizzato per le stringhe inline e l'elemento <x:c> deve avere un attributo t di 'inlineStr'. Questo sarà solo rich text che verrà emesso e non memorizzato nella tabella sharedstring.

Così il vostro primo sarebbe valida in questo modo:

<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> 

tuo secondo sarebbe valida in questo modo:

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