Excel 2010中的共享字符串

San*_*osh 9 ms-office openxml excel-2010 openxml-sdk

有人可以帮我理解MS Excel中的共享字符串吗?我试图理解使用一些博客,但无法完全了解.每个人都在解释如何使用Open XML访问共享字符串以及存储共享字符串的位置(作为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

Vin*_*Tan 12

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

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