/// <summary> /// Imports a excel xml workbook into a ExcelXmlWorkbook instance /// </summary> /// <param name="stream">Stream to import</param> /// <returns>If import was successful, the ExcelXmlWorkbook instance, null otherwise</returns> public static ExcelXmlWorkbook Import(Stream stream) { XmlReaderSettings settings = new XmlReaderSettings(); settings.CloseInput = false; settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; settings.IgnoreWhitespace = true; if (!stream.CanRead) { return(null); } XmlReader reader = XmlReader.Create(stream, settings); ExcelXmlWorkbook book = new ExcelXmlWorkbook(); book.Styles.Clear(); int workSheet = 0; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { // Document Properties case "DocumentProperties": { if (!reader.IsEmptyElement) { book.Properties.Import(reader); } break; } case "Styles": { if (!reader.IsEmptyElement) { book.ImportStyles(reader); } break; } case "Names": { ImportNamedRanges(reader, book, null); break; } case "Worksheet": { if (!reader.IsEmptyElement) { book[workSheet++].Import(reader); } break; } } } } book.ResolveNamedRangeReferences(); book.ResolveCellReferences(); reader.Close(); stream.Close(); stream.Dispose(); return(book); }
/// <summary> /// Imports a excel xml workbook into a ExcelXmlWorkbook instance /// </summary> /// <param name="stream">Stream to import</param> /// <returns>If import was successful, the ExcelXmlWorkbook instance, null otherwise</returns> public static ExcelXmlWorkbook Import(Stream stream) { XmlReaderSettings settings = new XmlReaderSettings(); settings.CloseInput = false; settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; settings.IgnoreWhitespace = true; if (!stream.CanRead) return null; XmlReader reader = XmlReader.Create(stream, settings); ExcelXmlWorkbook book = new ExcelXmlWorkbook(); book.Styles.Clear(); int workSheet = 0; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { // Document Properties case "DocumentProperties": { if (!reader.IsEmptyElement) book.Properties.Import(reader); break; } case "Styles": { if (!reader.IsEmptyElement) book.ImportStyles(reader); break; } case "Names": { ImportNamedRanges(reader, book, null); break; } case "Worksheet": { if (!reader.IsEmptyElement) book[workSheet++].Import(reader); break; } } } } book.ResolveNamedRangeReferences(); book.ResolveCellReferences(); reader.Close(); stream.Close(); stream.Dispose(); return book; }