使用自动编号从word文档表的列中提取单元格值

时间:2016-04-06 07:16:32

标签: c# office-interop word-automation

我正在使用Microsoft.Office.Interop.Word开发基于word自动化的应用程序
我正在使用这种方法从单元格中读取数据:

string strValue = tbMytable.Rows[iRowIndex].Cells[1].Range.Text;
if (strValue.Contains("\x0d\x07"))
{
    // remove cell marker
    strValue = strValue.Remove(strValue.IndexOf("\x0d\x07"), 2);
}

这适用于大多数表格,但是一旦我得到tbMytable.Rows[iRowIndex].Cells[1].Range.Text返回的空字符串

当我通过在Microsoft Office Word 2013中打开文档手动检查时,我可以看到第一列单元格的值为step 1step 2等。

经过一些调试,我发现这是因为该表使用了第一列的自动编号(步数字符串是1范围宽)。我再次在Word 2013中打开文档并确认了这一点。

现在如何使用Word Interop从这样的单元格中读取值?
除了修剪\x0d\x07或执行clmyCell.Range.MoveEnd(WdUnits.wdCharacter, -1)之外,还有更好的方法可以从没有细胞标记的细胞中提取vales吗?


修改
我添加了sample document [1]来澄清。

(zip的密码为password,没有任何空格。)

我能够从除第一列中的单元格之外的所有单元格中读取数据。
如何使用word interop从第一列中的单元格(例如“Step 2”字符串)读取数据?

[1] http://www.fileconvoy.com/dfl.php?id=g25ad0529c423888e999811789c1cece853a016e55



(zip的密码为password,没有任何空格。)

1 个答案:

答案 0 :(得分:1)

我在你的文档上测试了它,这是一个小例子,向你展示它是如何在VBA中完成的

Sub ShowTableCellValue()

    If ActiveDocument.Tables(1).Cell(1, 1).Range.ListParagraphs.Count > 0 Then
        MsgBox ActiveDocument.Tables(1).Cell(1, 1).Range.ListFormat.ListString
    End If

End Sub

我想你可以将它自己翻译成C#,如果没有喊出来,我也会帮助你做到这一点