11

有人可以帮助我理解MS Excel中的共享字符串吗?我尝试使用一些博客来理解,但无法获得完整的想法。每个人都在解释如何使用 Open XML 访问共享字符串以及共享字符串的存储位置(as sharedStrings.xml)。使用 API 访问很好。但,

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

我试着跟随。

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

4

1 回答 1

15

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

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

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

假设您在工作表“FirstSheet”的单元格 A1 中有文本“这是一个非常长的字符串”。假设您在工作表“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)。

于 2013-07-02T09:48:45.520 回答