Office Open XML中<ct ="str">和<c> <is>之间有什么区别?

Sam*_*eff 7 excel openxml xlsx spreadsheetml openxml-sdk

这两个Office Open XML片段之间有什么区别?

<c r="A2" t="str">
  <v>btyler</v>
</c>
Run Code Online (Sandbox Code Playgroud)

<c r="B2">
  <is><t>btyler</t></is>
</c>    
Run Code Online (Sandbox Code Playgroud)

注意:我根据规范手动创建的第二个示例,第一个是来自实际的Excel工作簿.

双方似乎都有效,并根据规范几乎是相同的,所以我不知道为什么会有t="str"<is>似乎做同样的事情.Excel何时选择使用其中一个?

amu*_*rra 9

根据18.18.11 ST_CellType的文档:

str(String)包含公式字符串的单元格.

因此,如果公式在<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>
Run Code Online (Sandbox Code Playgroud)

你的第二个有效是这样的:

<x:c r="B2" t="inlineStr">
   <is><t>btyler</t></is>
</c>
Run Code Online (Sandbox Code Playgroud)