C# 使用.net的poi从.doc提取表

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"); }

我得到以下错误

“表格的边界超出此范围段落的编号”

使用npoi从.doc文件提取表时,由于tonyqus()的缘故,npoi被移植到.net。下面是方法

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());
}
如何解决这个错误