C# MS Word:如何获取 table 单元格开始和结束的页码?
C# MS Word: How to get page number where a table cell starts and where it ends?
我需要查明 table 单元格是否分布在多个页面上。我的想法只是获取行开始和结束的页码。为了获取起始页和结束页,我编写了以下两种方法:
public static long GetCellStartPageNo(Word.Cell cell)
{
long result = -1;
cell.Select();
cell.Application.Selection.Start = 0;
cell.Application.Selection.End = 1;
result = cell.Application.Selection.Information[Word.WdInformation.wdActiveEndPageNumber];
return result;
}
public static long GetCellEndPageNo(Word.Cell cell)
{
long result = -1;
cell.Select();
int len = cell.Application.Selection.Text.Length;
cell.Application.Selection.Start = 0;
cell.Application.Selection.End = len - 1;
result = cell.Application.Selection.Information[Word.WdInformation.wdActiveEndPageNumber];
return result;
}
这两种方法背后的想法很简单:select 单元格中的第一个字符并获取 selection 范围的页码(=> 起始页),然后 select单元格中的最后一个字符并再次获取 selection 范围的页码(=> 结束页)。不幸的是,这两种方法总是 return 1 (=page 1) 作为结果。我做错了什么?
提前致谢,
迈克尔
我觉得问题出在这部分
cell.Application.Selection.Start = 0;
cell.Application.Selection.End = 1;
Selection.start 0 是文档的开头,而不是 table.
你需要这样的东西
cell.select();
cell.Application.Selection.End=cell.Application.Selection.Start+1;
cell.Application.Selection.Information[Word.WdInformation.wdActiveEndPageNumber];现在应该 return table 开始的页面。
我需要查明 table 单元格是否分布在多个页面上。我的想法只是获取行开始和结束的页码。为了获取起始页和结束页,我编写了以下两种方法:
public static long GetCellStartPageNo(Word.Cell cell)
{
long result = -1;
cell.Select();
cell.Application.Selection.Start = 0;
cell.Application.Selection.End = 1;
result = cell.Application.Selection.Information[Word.WdInformation.wdActiveEndPageNumber];
return result;
}
public static long GetCellEndPageNo(Word.Cell cell)
{
long result = -1;
cell.Select();
int len = cell.Application.Selection.Text.Length;
cell.Application.Selection.Start = 0;
cell.Application.Selection.End = len - 1;
result = cell.Application.Selection.Information[Word.WdInformation.wdActiveEndPageNumber];
return result;
}
这两种方法背后的想法很简单:select 单元格中的第一个字符并获取 selection 范围的页码(=> 起始页),然后 select单元格中的最后一个字符并再次获取 selection 范围的页码(=> 结束页)。不幸的是,这两种方法总是 return 1 (=page 1) 作为结果。我做错了什么?
提前致谢, 迈克尔
我觉得问题出在这部分
cell.Application.Selection.Start = 0;
cell.Application.Selection.End = 1;
Selection.start 0 是文档的开头,而不是 table.
你需要这样的东西
cell.select();
cell.Application.Selection.End=cell.Application.Selection.Start+1;
cell.Application.Selection.Information[Word.WdInformation.wdActiveEndPageNumber];现在应该 return table 开始的页面。