簡體   English   中英

如何使用XmlReader讀取零件中的xml?

[英]How to read an xml in parts using 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();
                }
            }
        }
    }

我沒有使用“ yeild”,而是嘗試將XElement添加到List(每5K行)並返回List,但是執行所需的時間比期望的多。

我沒有想法,任何幫助都值得贊賞。

嘗試使用ClosedXML。 您可以在這里找到: https : //closedxml.codeplex.com/和NuGet: https ://www.nuget.org/packages/ClosedXML/

該庫完全支持對Excel文檔的操作(在2007版之后,例如.xlsx文件)

玩得開心 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM