示例#1
0
 /***********************************
  * DAL METHODS
  ************************************/
 // Read
 internal static void UpdateCellHyperlinksFromReader(CustomOpenXmlReader reader, Worksheet worksheet)
 {
     while (reader.ReadToEndElement<OpenXmlSpreadsheet.Hyperlinks>())
     {
         if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Hyperlink>())
             UpdateCellHyperlinkFromReader(reader, worksheet);
     }
 }
示例#2
0
        /***********************************
         * DAL METHODS
         ************************************/
        // Read
        internal static SheetViews ReadSheetViewsFromReader(CustomOpenXmlReader reader, Worksheet worksheet)
        {
            SheetViews sheetViews = new SheetViews(worksheet);

            while (reader.ReadToEndElement<OpenXmlSpreadsheet.SheetViews>())
            {
                // only read the first sheetView element.
                if (reader.IsEndElementOfType<OpenXmlSpreadsheet.SheetView>())
                    break;

                if (reader.IsStartElementOfType<OpenXmlSpreadsheet.SheetView>())
                {
                    foreach (CustomOpenXmlAttribute attribute in reader.Attributes)
                    {
                        switch (attribute.LocalName)
                        {
                            case "tabSelected":
                                sheetViews.Selected = attribute.GetBoolValue();
                                break;
                        }
                    }
                }
                else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Pane>())
                {
                    int ySplit = 0;
                    int xSplit = 0;
                    bool isFrozen = false;

                    foreach (CustomOpenXmlAttribute attribute in reader.Attributes)
                    {
                        switch (attribute.LocalName)
                        {
                            case "ySplit":
                                ySplit = attribute.GetIntValue();
                                break;
                            case "xSplit":
                                xSplit = attribute.GetIntValue();
                                break;
                            case "state":
                                isFrozen = (attribute.Value == "frozen");
                                break;
                        }
                    }

                    if (isFrozen)
                    {
                        if (ySplit > 0) sheetViews.FrozenRow = ySplit;
                        if (xSplit > 0) sheetViews.FrozenRow = xSplit;
                    }
                }

            }

            return sheetViews;
        }
示例#3
0
        /***********************************
         * DAL METHODS
         ************************************/
        // Read
        internal static HeaderFooter ReadHeaderFooterFromReader(CustomOpenXmlReader reader, Worksheet worksheet)
        {
            HeaderFooter headerFooter = new HeaderFooter(worksheet);

            foreach (CustomOpenXmlAttribute attribute in reader.Attributes)
            {
                switch (attribute.LocalName)
                {
                    case "alignWithMargins":
                        headerFooter.AlignWithMargins = attribute.GetBoolValue();
                        break;
                    default:
                        throw new Exception(string.Format("HeaderFooter attribute {0} not coded", attribute.LocalName));
                }
            }

            while (reader.ReadToEndElement<OpenXmlSpreadsheet.HeaderFooter>())
            {
                if (reader.IsStartElementOfType<OpenXmlSpreadsheet.OddHeader>())
                    headerFooter.OddHeader = reader.GetText();
                else if (reader.IsStartElementOfType<OpenXmlSpreadsheet.OddFooter>())
                    headerFooter.OddFooter = reader.GetText();
            }

            return headerFooter;
        }
示例#4
0
        /***********************************
         * DAL METHODS
         ************************************/
        // Read
        internal static Picture ReadPictureFromReader(CustomOpenXmlReader reader, Drawing drawing)
        {
            string filePath = "";
            string description = "";
            string name = "";
            int id = 0;
            string blipRelationshipId = "";
            Size size = new Size();
            Point position = new Point();

            while (reader.ReadToEndElement<OpenXmlDrawingSpreadsheet.Picture>())
            {
                if (reader.IsStartElementOfType<OpenXmlDrawingSpreadsheet.NonVisualPictureProperties>())
                {
                    while (reader.ReadToEndElement<OpenXmlDrawingSpreadsheet.NonVisualPictureProperties>())
                    {
                        if (reader.IsStartElementOfType<OpenXmlDrawingSpreadsheet.NonVisualDrawingProperties>())
                        {
                            description = OpenXmlUtilities.GetAttributeValueFromReader(reader, "descr");
                            name = OpenXmlUtilities.GetAttributeValueFromReader(reader, "name");
                            id = reader.Attributes["id"].GetIntValue();
                        }
                    }
                }
                else if (reader.IsStartElementOfType<OpenXmlDrawingSpreadsheet.BlipFill>())
                {
                    while (reader.ReadToEndElement<OpenXmlDrawingSpreadsheet.BlipFill>())
                    {
                        if (reader.IsStartElementOfType<OpenXmlDrawing.Blip>())
                        {
                            blipRelationshipId = reader.Attributes["embed"].Value;
                            filePath = GetFilePathFromBlip(reader, drawing, blipRelationshipId);
                        }
                    }
                }
                else if (reader.IsStartElementOfType<OpenXmlDrawingSpreadsheet.ShapeProperties>())
                {
                    while (reader.ReadToEndElement<OpenXmlDrawingSpreadsheet.ShapeProperties>())
                    {
                        if (reader.IsStartElementOfType<OpenXmlDrawing.Offset>())
                            position = GetPositionFromReader(reader);
                        else if (reader.IsStartElementOfType<OpenXmlDrawing.Extents>())
                            size = GetSizeFromReader(reader);
                    }
                }
            }

            return new Picture(drawing, filePath, description, name, id, size, position, blipRelationshipId);//, sourceRectangle);
        }
示例#5
0
        private static object GetCellValueFromReader(CustomOpenXmlReader reader, CellDataType cellDataType, Row row)
        {
            object cellValue = null;

            while (reader.ReadToEndElement<OpenXmlSpreadsheet.Cell>())
            {
                if (reader.IsStartElementOfType<OpenXmlSpreadsheet.CellValue>())
                {
                    string rawValue = reader.GetText();

                    if (rawValue != "")
                    {
                        switch (cellDataType)
                        {
                            case CellDataType.Boolean:
                                cellValue = (rawValue == "1" ? true : false);
                                break;
                            case CellDataType.SharedString:
                                int sharedStringIndex = int.Parse(rawValue);
                                cellValue = row.Worksheet.Workbook.SharedStrings[sharedStringIndex];
                                break;
                            case CellDataType.Number:
                                double doubleValue = 0;
                                if (double.TryParse(rawValue, out doubleValue))
                                    cellValue = doubleValue;
                                break;
                            case CellDataType.String:
                                cellValue = rawValue.ToString();
                                break;
                            default:
                                throw new ArgumentOutOfRangeException();
                        }
                    }
                }
            }

            return cellValue;
        }