public void GetFormatStringは指定したインデックスの書式を取得できる()
        {
            // setup
            using (FileStream stream = new FileStream(getStylesPath(), FileMode.Open, FileAccess.Read))
            {
                XlsxStyles styles = new XlsxStyles(stream);

                //expect
                Assert.AreEqual("General", styles.GetFormatString(0));
                Assert.AreEqual("m/d/yy", styles.GetFormatString(1));
                Assert.AreEqual("#,##0.0000_ ", styles.GetFormatString(2));
            }
        }
        public void GetFormatIdは指定したインデックスの書式IDを取得できる()
        {
            // setup
            using (FileStream stream = new FileStream(getStylesPath(), FileMode.Open, FileAccess.Read))
            {
                XlsxStyles styles = new XlsxStyles(stream);

                //expect
                Assert.AreEqual(0, styles.GetFormatId(0));
                Assert.AreEqual(14, styles.GetFormatId(1));
                Assert.AreEqual(177, styles.GetFormatId(2));
            }
        }
        private XlsxStyles ReadStyles(Stream xmlFileStream)
        {
            var _Styles = new XlsxStyles();

            if (null == xmlFileStream)
            {
                return(_Styles);
            }

            bool rXlsxNumFmt = false;

            using (XmlReader reader = XmlReader.Create(xmlFileStream)) {
                while (reader.Read())
                {
                    if (!rXlsxNumFmt && reader.NodeType == XmlNodeType.Element && reader.LocalName == N_numFmts)
                    {
                        while (reader.Read())
                        {
                            if (reader.NodeType == XmlNodeType.Element && reader.Depth == 1)
                            {
                                break;
                            }

                            if (reader.NodeType == XmlNodeType.Element && reader.LocalName == XlsxNumFmt.N_numFmt)
                            {
                                _Styles.NumFmts.Add(
                                    new XlsxNumFmt(
                                        int.Parse(reader.GetAttribute(XlsxNumFmt.A_numFmtId)),
                                        reader.GetAttribute(XlsxNumFmt.A_formatCode)
                                        ));
                            }
                        }

                        rXlsxNumFmt = true;
                    }

                    if (reader.NodeType == XmlNodeType.Element && reader.LocalName == N_cellXfs)
                    {
                        while (reader.Read())
                        {
                            if (reader.NodeType == XmlNodeType.Element && reader.Depth == 1)
                            {
                                break;
                            }

                            if (reader.NodeType == XmlNodeType.Element && reader.LocalName == XlsxXf.N_xf)
                            {
                                var xfId     = reader.GetAttribute(XlsxXf.A_xfId);
                                var numFmtId = reader.GetAttribute(XlsxXf.A_numFmtId);

                                _Styles.CellXfs.Add(
                                    new XlsxXf(
                                        xfId == null ? -1 : int.Parse(xfId),
                                        numFmtId == null ? -1 : int.Parse(numFmtId),
                                        reader.GetAttribute(XlsxXf.A_applyNumberFormat)
                                        ));
                            }
                        }

                        break;
                    }
                }
            }
            return(_Styles);
        }