/*********************************** * DAL METHODS ************************************/ // Read internal static void UpdateCellHyperlinksFromReader(CustomOpenXmlReader reader, Worksheet worksheet) { while (reader.ReadToEndElement<OpenXmlSpreadsheet.Hyperlinks>()) { if (reader.IsStartElementOfType<OpenXmlSpreadsheet.Hyperlink>()) UpdateCellHyperlinkFromReader(reader, worksheet); } }
/*********************************** * 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; }
/*********************************** * 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; }
/*********************************** * 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); }
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; }