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