3

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

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

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

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

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

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

请向我询问有关问题的任何澄清。

4

3 回答 3

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++;
            }

通过以下链接的第三个数字答案。

使用 Open XML SDK 替换 Word 文件中的书签文本

于 2013-04-09T04:29:45.433 回答
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
}
于 2013-04-09T04:34:19.780 回答
0

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

    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
    }
于 2013-04-09T09:59:41.893 回答