8using NanoXLSX.Interfaces;
9using NanoXLSX.Interfaces.Writer;
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 => sst;
40 public int SharedStringsTotalCount {
get;
set; }
45 public ISortedMap SharedStrings => sharedStrings;
52 public SharedStringWriter()
62 public void Init(IBaseWriter baseWriter)
64 this.Workbook = baseWriter.Workbook;
65 sharedStrings =
new SortedMap();
66 SharedStringsTotalCount = 0;
74 sst = XmlElement.CreateElement(
"sst");
75 sst.AddDefaultXmlNameSpace(
"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
76 sst.AddAttribute(
"count", ParserUtils.ToString(SharedStringsTotalCount));
77 sst.AddAttribute(
"uniqueCount", ParserUtils.ToString(sharedStrings.Count));
78 foreach (IFormattableText text
in sharedStrings.Keys)
80 sst.AddChildElement(text.GetXmlElement());
83 WriterPlugInHandler.HandleInlineQueuePlugins(ref sst, Workbook, PlugInUUID.SharedStringsInlineWriter);