我正在使用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 1
,step 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
,没有任何空格。)
答案 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#,如果没有喊出来,我也会帮助你做到这一点