当我使用以下行时它会读取该特定文档的所有表格:
foreach (Microsoft.Office.Interop.Word.Table tableContent in document.Tables)
但我想读取特定内容的表格,例如从一个标识符到另一个标识符。
标识符可以是 [SRS oraganisation_123] 形式的另一个标识符 [SRS Oraganisation_456]
我想仅在上述标识符之间阅读表格。
假设第34页包含我的标识符,所以我希望从该点读取所有表,直到我遇到我的第二个标识符。我不想读剩余的表。
请问我在问题中有任何澄清。
答案 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号回答。
答案 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)
假设开始和结束标识符存储在名为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
}