首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

c# 操作 word 换页时遇到的有关问题

2012-12-16 
c# 操作 word 换页时遇到的问题情况如下,当我用c#代码创建一个word时,不管这个word会被创建成多少页,多大

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



 
[解决办法]
由Windows版移至C#
[解决办法]
已解决:
自己在NewLine方法中添加了一些代码就可以了,代码如下:



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);

热点排行