Excel 2010中的共享字符串

时间:2013-06-27 07:24:50

标签: ms-office excel-2010 openxml openxml-sdk

有人可以帮我理解MS Excel中的共享字符串吗?我试图理解使用一些博客,但无法完全了解。每个人都在解释如何使用Open XML访问共享字符串以及存储共享字符串的位置(作为sharedstrings.xml)。使用API​​访问很好。但是,

  1. 如何在Excel中创建共享字符串。 (在EXCEL 2010中手动创建,不使用API​​)
  2. 共享字符串的确切需求是什么?
  3. 在哪些情况下我可以使用共享字符串?
  4. 我试过了。

    http://www.sadev.co.za/content/reading-and-writing-excel-2007-or-excel-2010-c-part-iii-shared-strings

    http://msdn.microsoft.com/en-us/library/gg278314.aspx

1 个答案:

答案 0 :(得分:11)

共享字符串基本上是一种节省空间的机制。至于你的问题:

<强> A1 即可。您无法使用Excel用户界面手动创建共享字符串。这是因为Excel默认情况下始终将任何文本存储为共享字符串。

<强> A2 即可。如上所述,这是一种节省空间的机制。 Excel 2007/2010/2013使用Open XML格式,它基本上是一堆压缩在一起的XML文件。它也可能是为了便于参考。您只需要引用一个索引,就像引用一个字符串数组的索引一样。 (但XML本质上是冗长的,所以我怀疑这是出于节省空间的目的)。

假设您在工作表“FirstSheet”的单元格A1中有文本“This is a long long string”。假设您在工作表“SecondSheet”的单元格B7中也有相同的文本。 Excel将共享字符串表中的“这是一个非常长的文本”存储为一个条目,例如索引5.在“FirstSheet”单元格A1中,Open XML SDK类Cell将仅包含“5”作为CellValue。在“SecondSheet”单元格B7中,SDK类Cell也将包含“5”。

基本上,CellValue只保存共享字符串表的索引。这就是你节省空间的方法。假设文本在工作表中以及不同的工作表中重复。

<强> A3 即可。如果您了解如何使其工作,请转到共享字符串。如果没有,只需在Cell类中为CellValue设置实际文本(Cell.DataType为CellValues.String而不是CellValues.SharedString)。