2016-04-06 50 views
0

我正在開發使用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)


編輯:
我添加了一個sample document   [1]澄清。

(zip的密碼是password,沒有任何空格)。

我能夠讀取除第一列中的單元格以外的所有單元格的數據。
如何使用word interop從第一列中的單元格(例如「第2步」字符串)中讀取數據?

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



(密碼拉鍊是password,沒有任何空格)。

+0

恐怕我不明白最後的細節。我遵循你的提取細胞內容,切斷單元格末尾的字符。但是,關於自動編號的「怎麼辦」並不明確。也許如果你提供一個更準確的描述你期望的結果與你實際得到的結果?在Range.Text中不返回FWIW自動編號。你只能通過'Paragraph'和'Paragraph.Range'對象(屬於「List」的屬性)訪問它。 –

+0

@CindyMeister我通過分享樣本文件和那裏的具體問題更新了我的文章。希望澄清它。 –

+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#,如果不是喊出來我也會幫你做到這一點