如何从文档中的特定位置读取表格?

时间:2013-04-09 04:07:46

标签: c# ms-word

当我使用以下行时它会读取该特定文档的所有表格:

  foreach (Microsoft.Office.Interop.Word.Table tableContent in document.Tables)

但我想读取特定内容的表格,例如从一个标识符到另一个标识符。

标识符可以是 [SRS oraganisation_123] 形式的另一个标识符 [SRS Oraganisation_456]

我想仅在上述标识符之间阅读表格。

假设第34页包含我的标识符,所以我希望从该点读取所有表,直到我遇到我的第二个标识符。我不想读剩余的表。

请问我在问题中有任何澄清。

3 个答案:

答案 0 :(得分:0)

如果对您有所帮助,请查看以下代码。

System.Data.DataTable dt = new System.Data.DataTable();
           foreach (Microsoft.Office.Interop.Word.Cell c in r.Cells)
            {
                if(c.Range.Text=="Content you want to compare")
                  dt.Columns.Add(c.Range.Text);
            }
            foreach (Microsoft.Office.Interop.Word.Row row in newTable.Rows)
            {
                System.Data.DataRow dr = dt.NewRow();
                int i = 0;
                foreach (Cell cell in row.Cells)
                {
                    if (!string.IsNullOrEmpty(cell.Range.Text)&&(cell.Range.Text=="Text you want to compare with"))
                    {
                        dr[i] = cell.Range.Text; 
                    }
                }
                dt.Rows.Add(dr);
                i++;
            }

通过以下链接的第3号回答。

Replace bookmark text in Word file using Open XML SDK

答案 1 :(得分:0)

不确定您的程序是如何构建的...但是如果您可以访问tableContent中的标识符,那么您应该能够编写LINQ查询。

var identifiers = new List<string>();
identifiers.Add("myIdentifier");

var tablesWithOnlyTheIdentifiersIWant = document.Tables.Select(tableContent => identifiers.Contains(tableContent.Identifier)

foreach(var tableContent in tablesWithOnlyTheIdentifiersIWant)
{
     //Do something
}

答案 2 :(得分:0)

假设开始和结束标识符存储在名为myStartIdentifiermyEndIdentifier的变量中 -

    Range myRange = doc.Range();
    int iTagStartIdx = 0;
    int iTagEndIdx = 0;

    if (myRange.Find.Execute(myStartIdentifier))
        iTagStartIdx = myRange.Start;

    myRange = doc.Range();    
    if (myRange.Find.Execute(myEndIdentifier))
        iTagEndIdx = myRange.Start;

    foreach (Table tbl in doc.Range(iTagStartIdx,iTagEndIdx).Tables)
    {
       // Your code goes here
    }