예제 #1
0
        /// <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);
        }
예제 #2
0
		/// <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;
		}