private void ImportRow(XmlReader reader)
        {
            bool     isEmpty  = reader.IsEmptyElement;
            int      rowIndex = _Rows.Count;
            double   height   = -1;
            XmlStyle style    = null;
            bool     hidden   = false;

            foreach (XmlReaderAttributeItem xa in reader.GetAttributes())
            {
                if (xa.LocalName == "Height" && xa.HasValue)
                {
                    xa.Value.ParseToInt(out height);
                }
                if (xa.LocalName == "Index" && xa.HasValue)
                {
                    xa.Value.ParseToInt(out rowIndex);
                    rowIndex--;
                }
                if (xa.LocalName == "StyleID" && xa.HasValue)
                {
                    style = ParentBook.GetStyleByID(xa.Value);
                }
                if (xa.LocalName == "Hidden" && xa.HasValue)
                {
                    hidden = xa.Value == "1";
                }
            }
            Row row = GetRowByIndex(rowIndex);

            row.Hidden = hidden;
            if (height != -1)
            {
                row.Height = height;
            }
            if (style != null)
            {
                row.Style = style;
            }
            if (isEmpty)
            {
                return;
            }
            while (reader.Read() && !(reader.Name == "Row" && reader.NodeType == XmlNodeType.EndElement))
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.Name == "Cell")
                    {
                        ImportCell(reader, row);
                    }
                }
            }
        }
Beispiel #2
0
        public ReferencedBooksDataItem Copy()
        {
            var result = new ReferencedBooksDataItem();

            result.ParentBook = ParentBook?.Copy();

            if (ChildBooks != null)
            {
                result.ChildBooks = new List <BookIDs>(ChildBooks.Count);
                ChildBooks.ForEach(bookID => result.ChildBooks.Add(bookID.Copy()));
            }

            return(result);
        }
Beispiel #3
0
        internal void Import(XmlReader reader)
        {
            foreach (XmlReaderAttributeItem xa in reader.GetAttributes())
            {
                if (xa.LocalName == "Name" && xa.HasValue)
                {
                    Name = xa.Value;
                }

                if (xa.LocalName == "StyleID" && xa.HasValue)
                {
                    Style = ParentBook.GetStyleByID(xa.Value);
                }
            }

            while (reader.Read() && !(reader.Name == "Worksheet" && reader.NodeType == XmlNodeType.EndElement))
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "Names":
                    {
                        ExcelXmlWorkbook.ImportNamedRanges(reader, GetParentBook(), this);

                        break;
                    }

                    case "Table":
                    {
                        ImportTable(reader);

                        break;
                    }

                    case "WorksheetOptions":
                    {
                        ImportOptions(reader);

                        break;
                    }
                    }
                }
            }
        }
Beispiel #4
0
        private void ImportCell(XmlReader reader, Row row)
        {
            bool isEmpty = reader.IsEmptyElement;

            int cellIndex = row._Cells.Count;

            int mergeDown   = 0;
            int mergeAcross = 0;

            XmlStyle style     = null;
            string   formula   = "";
            string   reference = "";

            foreach (XmlReaderAttributeItem xa in reader.GetAttributes())
            {
                if (xa.LocalName == "Index" && xa.HasValue)
                {
                    xa.Value.ParseToInt(out cellIndex);

                    cellIndex--;
                }

                if (xa.LocalName == "StyleID" && xa.HasValue)
                {
                    style = ParentBook.GetStyleByID(xa.Value);
                }

                if (xa.LocalName == "HRef" && xa.HasValue)
                {
                    reference = xa.Value;
                }

                if (xa.LocalName == "Formula" && xa.HasValue)
                {
                    formula = xa.Value;
                }

                if (xa.LocalName == "MergeAcross" && xa.HasValue)
                {
                    xa.Value.ParseToInt(out mergeAcross);
                }

                if (xa.LocalName == "MergeDown" && xa.HasValue)
                {
                    xa.Value.ParseToInt(out mergeDown);
                }
            }

            Cell cell = Cells(cellIndex, row.RowIndex);

            if (style != null)
            {
                cell.Style = style;
            }

            if (!reference.IsNullOrEmpty())
            {
                cell.HRef = reference;
            }

            if (!formula.IsNullOrEmpty())
            {
                FormulaParser.Parse(cell, formula);

                return;
            }

            if (isEmpty)
            {
                return;
            }

            if (mergeDown > 0 || mergeAcross > 0)
            {
                cell.MergeStart = true;

                Range range = new Range(cell, Cells(cellIndex + mergeAcross, row.RowIndex + mergeDown));

                _MergedCells.Add(range);

                cell.ColumnSpan = range.ColumnCount;
                cell.RowSpan    = range.RowCount;
            }

            while (reader.Read() && !(reader.Name == "Cell" && reader.NodeType == XmlNodeType.EndElement))
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.Name == "Data")
                    {
                        ImportCellData(reader, cell);
                    }
                    else if (reader.Name == "Comment")
                    {
                        ImportCellComment(reader, cell);
                    }
                }
            }
        }
Beispiel #5
0
        private void ImportTable(XmlReader reader)
        {
            if (reader.IsEmptyElement)
            {
                return;
            }

            int column = 0;

            while (reader.Read() && !(reader.Name == "Table" && reader.NodeType == XmlNodeType.EndElement))
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "Column":
                    {
                        double   width  = 0;
                        bool     hidden = false;
                        int      span   = 1;
                        XmlStyle style  = null;

                        foreach (XmlReaderAttributeItem xa in reader.GetAttributes())
                        {
                            if (xa.LocalName == "Width" && xa.HasValue)
                            {
                                double d;
                                if (xa.Value.ParseToInt(out d))
                                {
                                    width = d;
                                }
                            }

                            if (xa.LocalName == "Hidden" && xa.HasValue)
                            {
                                hidden = xa.Value == "1";
                            }

                            if (xa.LocalName == "Index" && xa.HasValue)
                            {
                                xa.Value.ParseToInt(out column);
                            }

                            if (xa.LocalName == "Span" && xa.HasValue)
                            {
                                xa.Value.ParseToInt(out span);
                            }

                            if (xa.LocalName == "StyleID" && xa.HasValue)
                            {
                                style = ParentBook.GetStyleByID(xa.Value);
                            }
                        }

                        for (int i = 1; i <= span; i++)
                        {
                            Columns(column).Width  = width;
                            Columns(column).Hidden = hidden;

                            if (style != null)
                            {
                                Columns(column).Style = style;
                            }

                            column++;
                        }

                        break;
                    }

                    case "Row":
                    {
                        ImportRow(reader);

                        break;
                    }
                    }
                }
            }
        }