2013-06-27 20 views
7

Qualcuno può aiutarmi a comprendere le stringhe condivise in MS Excel? Ho cercato di capire usando alcuni blog ma non ho potuto avere un'idea completa. Tutti stanno spiegando come accedere a Shared String usando Open XML e dove sono archiviate le stringhe condivise (come sharedstrings.xml). L'accesso usando l'API va bene. Ma,Stringhe condivise in Excel 2010

  1. Come creare stringhe condivise in Excel. (Creazione manuale in EXCEL 2010, non utilizzando API)
  2. Qual è l'esatta necessità di stringhe condivise?
  3. In quali casi posso utilizzare le stringhe condivise?

Ho provato a seguire.

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

risposta

10

stringhe condivise è fondamentalmente un meccanismo di risparmio di spazio. Per quanto riguarda le vostre domande:

A1. Non è possibile creare manualmente stringhe condivise utilizzando l'interfaccia utente di Excel. Questo perché Excel di default memorizza sempre qualsiasi testo come stringa condivisa.

A2. Come accennato è un meccanismo salvaspazio. Excel 2007/2010/2013 utilizza il formato Open XML, che è fondamentalmente un insieme di file XML compressi insieme. Potrebbe anche essere per facilità di referenziazione. Devi solo fare riferimento a un indice, proprio come fai riferimento a un indice di una serie di stringhe. (Ma XML è intrinsecamente prolisso, quindi sospetto che sia per scopi di risparmio di spazio).

Supponiamo di avere il testo "Questa è una stringa molto lunga" nella cella A1 del foglio "FirstSheet". Supponiamo che tu abbia lo stesso testo nella cella B7 del foglio "SecondSheet". Excel memorizza "Si tratta di un testo molto lungo" nella tabella delle stringhe condivisa come una voce, ad esempio l'indice 5. Nella cella A1 "FirstSheet", la cella Open XML SDK contiene solo "5" come CellValue. Nella cella B7 "SecondSheet", la cella della classe SDK conterrà anche "5".

Fondamentalmente, il valore CellValue mantiene solo l'indice sulla tabella di stringhe condivisa. Ecco come risparmi lo spazio. L'ipotesi è che il testo sia duplicato all'interno del foglio di lavoro e tra diversi fogli di lavoro.

A3. Vai per stringhe condivise se capisci come farlo funzionare. In caso contrario, è sufficiente impostare il testo effettivo nella classe Cell per CellValue (Cell.DataType come CellValues.String anziché CellValues.SharedString).

+0

Eccellente !!! Fatto. Questo è quello che stavo cercando. Ho una buona idea Grazie mille per la tua spiegazione – Santhosh