[英]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.