如何使用XmlReader读取部分xml?

时间:2017-03-13 21:31:32

标签: c# openxml xmlreader

我有以下扩展方法从excel文件中读取行。但是,excel文件太大(超过500K行和900列),我希望无论如何都要读取部分的excel文件(例如,每次5K行)。

static IEnumerable<XElement> StreamRows(this OpenXmlPart part)
    {
        using (StreamReader stringReader = new StreamReader(part.GetStream()))
        using (XmlReader xmlReader = XmlReader.Create(stringReader))
        {
            xmlReader.MoveToContent();

            while (!xmlReader.EOF)
            {
                if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "row")
                {
                    XElement el = XElement.ReadFrom(xmlReader) as XElement;
                    if (el != null)
                    {
                        yield return el;
                    }
                }
                else
                {
                    xmlReader.Read();
                }
            }
        }
    }

而不是使用&#39; yeild&#39;我尝试将XElements添加到List(每5K行)并返回List,但执行时间比预期要多。

我没有想法,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用ClosedXML。您可以在此处找到:https://closedxml.codeplex.com/和NuGet:https://www.nuget.org/packages/ClosedXML/

此库完全支持对Excel文档的操作(2007版之后,例如.xlsx文件)

玩得开心;)