10using NanoXLSX.Registry;
11using NanoXLSX.Registry.Attributes;
13using NanoXLSX.Utils.Xml;
20 [NanoXlsxPlugIn(PlugInUUID = PlugInUUID.SharedStringsWriter)]
21 internal class SharedStringWriter : ISharedStringWriter
23 private XmlElement sst;
24 private SortedMap sharedStrings;
30 public Workbook Workbook {
get;
set; }
35 public XmlElement XmlElement {
get => sst; }
40 public int SharedStringsTotalCount {
get;
set; }
45 public ISortedMap SharedStrings
47 get {
return sharedStrings; }
55 public SharedStringWriter()
65 public void Init(IBaseWriter baseWriter)
67 this.Workbook = baseWriter.Workbook;
68 sharedStrings =
new SortedMap();
69 SharedStringsTotalCount = 0;
77 sst = XmlElement.CreateElement(
"sst");
78 sst.AddDefaultXmlNameSpace(
"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
79 sst.AddAttribute(
"count", ParserUtils.ToString(SharedStringsTotalCount));
80 sst.AddAttribute(
"uniqueCount", ParserUtils.ToString(sharedStrings.Count));
81 foreach (IFormattableText text
in sharedStrings.Keys)
83 XmlElement child = XmlElement.CreateElement(
"si");
85 child.AddChildElement(text.GetXmlElement());
86 sst.AddChildElement(child);
89 WriterPlugInHandler.HandleInlineQueuePlugins(ref sst, Workbook, PlugInUUID.SharedStringsInlineWriter);