C# 使用.net的poi从.doc提取表
我得到以下错误 “表格的边界超出此范围段落的编号” 使用npoi从.doc文件提取表时,由于tonyqus()的缘故,npoi被移植到.net。下面是方法C# 使用.net的poi从.doc提取表,c#,npoi,C#,Npoi,我得到以下错误 “表格的边界超出此范围段落的编号” 使用npoi从.doc文件提取表时,由于tonyqus()的缘故,npoi被移植到.net。下面是方法 public Table GetTable(Paragraph paragraph) { if (!paragraph.IsInTable()) { throw new ArgumentException("This paragraph doesn't belong to a table"); }
public Table GetTable(Paragraph paragraph)
{
if (!paragraph.IsInTable())
{
throw new ArgumentException("This paragraph doesn't belong to a table");
}
Range r = paragraph;
if (r._parent != this)
{
throw new ArgumentException("This paragraph is not a child of this range");
}
r.InitAll();
int tableLevel = paragraph.GetTableLevel();
int tableEndInclusive = r._parStart;
if (r._parStart != 0)
{
Paragraph previous = new Paragraph(_paragraphs[r._parStart - 1], this);
if (previous.IsInTable() && previous.GetTableLevel() == tableLevel
&& previous._sectionEnd >= r._sectionStart)
{
throw new ArgumentException("This paragraph is not the first one in the table");
}
}
Range overallRange = _doc.GetOverallRange();
int limit = _paragraphs.Count;
for (; tableEndInclusive < limit - 1; tableEndInclusive++)
{
Paragraph next = new Paragraph(
_paragraphs[tableEndInclusive + 1], overallRange);
if (!next.IsInTable() || next.GetTableLevel() < tableLevel)
{
break;
}
}
InitAll();
if (tableEndInclusive > _parEnd)
{
throw new IndexOutOfRangeException($"The table's bounds [{_parStart};{tableEndInclusive}] fall outside of this Range paragraph's number [{_parStart};{_parEnd}]");
}
if (tableEndInclusive < 0)
{
throw new IndexOutOfRangeException("The table's end is negative, which isn't allowed!");
}
int endOffsetExclusive = _paragraphs[tableEndInclusive].End;
return new Table(paragraph.StartOffset, endOffsetExclusive, this, paragraph.GetTableLevel());
}
公共表GetTable(段落)
{
如果(!段落.IsInTable())
{
抛出新的ArgumentException(“此段落不属于表”);
}
范围r=段落;
如果(r._parent!=此)
{
抛出新ArgumentException(“此段落不是此范围的子段”);
}
r、 InitAll();
int tableLevel=段落.GetTableLevel();
int tableEndInclusive=r.\u parStart;
如果(r.\u parStart!=0)
{
前一段=新段(_段落[r._parStart-1],本);
if(previous.IsInTable()&&previous.GetTableLevel()==tableLevel
&&上一个。_sectionEnd>=r._sectionStart)
{
抛出新的ArgumentException(“此段落不是表中的第一段”);
}
}
Range overallRange=\u doc.GetOverallRange();
int limit=_.Count;
对于(;tableEndInclusive<限制-1;tableEndInclusive++)
{
下一段=新段(
_段落[tableEndInclusive+1],总体范围);
如果(!next.IsInTable()| | next.GetTableLevel()\u parEnd)
{
抛出新的IndexOutOfRangeException($“表的边界[{u parStart};{tableEndInclusive}]超出此范围段落的编号[{u parStart};{u parEnd}]”);
}
如果(tableEndInclusive<0)
{
抛出新的IndexOutOfRangeException(“表的结尾是负数,这是不允许的!”);
}
int endOffsetExclusive=_段落[tableEndInclusive].End;
返回新表(paragration.StartOffset,endOffsetExclusive,this,paragration.GetTableLevel());
}
如何解决这个错误