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

标签 excel openxml openxml-sdk xlsx spreadsheetml

这两个 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 何时选择使用其中一种而不是另一种?

最佳答案

根据18.18.11 ST_CellType处的文档:

str (String) Cell containing a formula string.

因此,如果公式位于 <x:v> 中,您只会使用第一个示例元素。

第二个用于内联字符串,<x:c>元素应该有 t 'inlineStr' 的属性。这只是输出的富文本,不会存储在共享字符串表中。

所以你的第一个将像这样有效:

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

关于excel - Office Open XML 中的 <c t ="str"> 和 <c><is> 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740179/

相关文章:

c# - 如何使用 Epplus 获取修改后的 excel 的实际使用范围?

vba - 如何在 Excel 中将 DocumentProperty 添加到 CustomDocumentProperties?

Excel从固定单元格引用到列末尾?

c# - 将模板与 OpenXML 和 SAX 结合使用

Excel Vba从2个单元格值创建数组,步长为1

c# - 使用openxml合并excel中的相邻单元格

c# - 打开 XML SDK : 'The process cannot access the file ' x' because it is being used by another process. '

.net - 从 XLSX 导出大量数据 - OutOfMemoryException

c# - 替换 OpenXML 中的内容控件

c# - 如何重新编号 WordProcessingDocument 中的页面?