/// <summary> /// Read shared strings to list /// </summary> private void GetSharedStrings() { if (_package.Package.PartExists(SharedStringsUri)) { var xml = _package.GetXmlFromUri(SharedStringsUri); XmlNodeList nl = xml.SelectNodes("//d:sst/d:si", NameSpaceManager); _sharedStringsList = new List<SharedStringItem>(); if (nl != null) { foreach (XmlNode node in nl) { XmlNode n = node.SelectSingleNode("d:t", NameSpaceManager); if (n != null) { _sharedStringsList.Add(new SharedStringItem() { Text = ConvertUtil.ExcelDecodeString(n.InnerText) }); } else { _sharedStringsList.Add(new SharedStringItem() { Text = node.InnerXml, isRichText = true }); } } } //Delete the shared string part, it will be recreated when the package is saved. foreach (var rel in Part.GetRelationships()) { if (rel.TargetUri.OriginalString.EndsWith("sharedstrings.xml", StringComparison.InvariantCultureIgnoreCase)) { Part.DeleteRelationship(rel.Id); break; } } _package.Package.DeletePart(SharedStringsUri); //Remove the part, it is recreated when saved. } }