c# 操作 word 换页时遇到的问题
情况如下,当我用c#代码创建一个word时,不管这个word会被创建成多少页,多大的文档,用我在网上搜索的代码都是可以正确实现的,没有任何问题。
但是当在word文档中插入表格,并且在表格的行数太多以至于跨度在两页或以上时,就会出现这样一个情况,如果在这个表格插入完成后,再紧接着插入文字或其他不是表格的元素,就会把当前插入的内容插入到之前的表格处于分页状态的行位置。这句比较绕口,我下面实际说明一下
插入表格:
表头1 表头2 表头3 表头4
行11 行12 行13 行14
行21 行22 行23 行24
行31 行32 行33 行34
行41 行42 行43 行44
--------------------------------此处开始分页
行51 行52 行53 行54
行61 行62 行63 行64
行71 行72 行73 行74
行81 行82 行83 行84
--------------------------------如果此时插入文字“表格描述:测试语句”,并不会出现在“行81”的下方,而是插入到“行41”的单元格中
---------------------------------- 下面是我操作word的部分代码
/// <SUMMARY>
/// 换行
/// </SUMMARY>
public void NewLine(int number)
{
object count = 14;
object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;
_wordApplication.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
for (int i = 0; i < number; i++)
_wordApplication.Selection.TypeParagraph();//插入段落
_wordApplication.Selection.MoveEnd();
_wordApplication.ActiveDocument.Range().MoveEnd();
}
/// <summary>
/// 插入表格
/// </summary>
/// <param name="rows">行</param>
/// <param name="cols">列</param>
/// <param name="colWidth">列宽</param>
/// <returns></returns>
public Table InsertTable(int rows, int cols, float[] colWidth)
{
Table newTable = _wordDocument.Tables.Add(_wordApplication.Selection.Range,rows, cols, ref Nothing, ref Nothing);
newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
_wordApplication.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
for (int i = 0; i < colWidth.Length; i++)
{
newTable.Columns[i + 1].Width = colWidth[i];
}
NewLine();
return newTable;
}
/// <summary>
/// 为表格添加内容
/// </summary>
/// <param name="table">表格</param>
/// <param name="row">第几行</param>
/// <param name="col">第几列</param>
/// <param name="WordStyle">字体颜色</param>
public Cell FillTable(Table table, int row, int col, WordStyle ws)
{
Cell cell = table.Cell(row, col);
try
{
Range range = cell.Range;
range.Text = ws.Content;
range.Bold = ws.Bold;
range.Font.Size = ws.FontSize;
range.Font.Color = ws.Color;
cell.Shading.ForegroundPatternColor = ws.BCColor;
}
catch { }
return cell;
}
/// <SUMMARY>
/// 插入文字
/// </SUMMARY>
/// <PARAM name="WordStyle" />文本样式 ,自定义的一个样式类
public void InsertText(WordStyle ws)
{
//设置字体样式以及方向
Selection s = this._wordApplication.Application.Selection;
s.Font.Size = ws.FontSize;
s.Font.Bold = ws.Bold;
s.Font.Color = ws.Color;
s.ParagraphFormat.Alignment = ws.Align;
s.TypeText(ws.Content);
}
object dummy = System.Reflection.Missing.Value;
object what = WdGoToItem.wdGoToLine;
object which = WdGoToDirection.wdGoToLast;
object count = 99999999;
_wordDocument.Application.Selection.GoTo(ref what, ref which, ref count, ref dummy);