Вы можете получить номер страницы в таблице на с:
table.Range.Information[Word.WdInformation.wdActiveEndAdjustedPageNumber];
Когда вы говорите, вам нужна функция, как:
nPage = PageNumberForTable(nTable);
Кажется странным ... Я думаю, вам, возможно, понадобятся два метода: один, чтобы получить таблицу от имени (Title) другой, чтобы получить все таблицы на данной странице. Чтобы получить таблицы на данной странице, я использовал список для их хранения, так как на этой странице есть несколько таблиц. В документе слова я установил таблицу Titles
в таблицу1, table2, table3 ... и т. Д. Также, если таблица разбивает страницы, она вернет страницу, на которой заканчивается таблица. Надеюсь это поможет.
private static int GetTablePageNumberFromTitle(string inTitle, Word.Document doc) {
foreach (Word.Table tb in doc.Tables) {
if (tb.Title == inTitle) {
return tb.Range.Information[Word.WdInformation.wdActiveEndAdjustedPageNumber];
}
}
return -1;
}
private static List<Word.Table> GetTablesOnPage(int targetPage, Word.Document doc) {
List<Word.Table> tablesOnPage = new List<Word.Table>();
int curPage = -1;
foreach (Word.Table tb in doc.Tables) {
curPage = tb.Range.Information[Word.WdInformation.wdActiveEndAdjustedPageNumber];
if (curPage == targetPage) {
tablesOnPage.Add(tb);
}
}
return tablesOnPage;
}
Некоторые тесты
Console.WriteLine("--------------");
Console.WriteLine("Get page table named 'table3' is on...");
int pageNum = GetTablePageNumberFromTitle("table3", doc);
Console.WriteLine("'table3 is on page: " + pageNum);
Console.WriteLine("--------------");
Console.WriteLine("Get page table named 'table2' is on... It starts on page 2 and ends on page 3");
pageNum = GetTablePageNumberFromTitle("table2", doc);
Console.WriteLine("'table2 is on page: " + pageNum);
Console.WriteLine("--------------");
Console.WriteLine("Get tables on page 4");
List<Word.Table> allTables = GetTablesOnPage(4, doc);
foreach (Word.Table tb in allTables) {
Console.WriteLine(tb.Title + " is on page " + 4);
}
Console.WriteLine("--------------");
Console.WriteLine("Get tables on page 5");
allTables = GetTablesOnPage(5, doc);
foreach (Word.Table tb in allTables) {
Console.WriteLine(tb.Title + " is on page " + 5);
}
Джон, спасибо очень много. Код, который вы предоставили, отлично работает. Мне не нужно создавать функцию (я пытался объяснить это как можно яснее, но я вызвал больше путаницы :)). –