none
c#操作word表格,单元格文字格式咋设置成不同的,如X2,X正常,2为下标 RRS feed

  • 问题

  • c#操作word表格,单元格文字格式咋设置成不同的,如X2,X正常,2为下标,用代码咋实现,非word内操作,谢谢
    2013年1月10日 6:46

答案

  • 你好,

    这个通过设置文字的格式是不能完成的,而是要通过插入方程式来实现。

    手动的操作方式如下,

    一般情况下很多功能的代码实现方式可以通过打开录宏功能+手动操作来看到。录宏功能根据上述操作产生的代码。

    Sub Macro15()
    '
    ' Macro15 Macro
    '
    '
        Selection.OMaths(1).Functions.Add Range:=Selection.Range, Type:= _
            wdOMathFunctionScrSub
        Selection.MoveLeft Unit:=wdCharacter, Count:=2
        Selection.TypeText text:="X"
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.TypeText text:="2"
        Selection.MoveRight Unit:=wdCharacter, Count:=1
    End Sub

    产生的宏往往并不足以让你翻译成C#直接用,但是可以让你看到你操作了哪些对象模型,所以还是有一定帮助的。

    下面是C#代码。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Word = Microsoft.Office.Interop.Word;
    
    namespace ConsoleApplication_AddEquationToTable
    {
        class Program
        {
            static void Main(string[] args)
            {   
                //启动Word并设为可见。
                Word._Application wdApp = new Word.Application();
                wdApp.Visible = true;
                //添加一个空白文档。并在文档中添加一个 2 x 2 的表格。设置一下表格边界线格式。
                Word.Document wdDoc = wdApp.Documents.Add();
                Word.Table wdTab = wdDoc.Tables.Add(wdDoc.Paragraphs.Add().Range, 2, 2);
                wdTab.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                wdTab.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
    
                //取表格的第一行第一格区域。加入一个RichText Content Control。
                Word.Range wdRng = wdTab.Cell(1, 1).Range;
                wdRng.Select();
                Word.ContentControl rtcControl = wdRng.ContentControls.Add(
                    Word.WdContentControlType.wdContentControlRichText);
    
                //OMath Object (Word)   http://msdn.microsoft.com/en-us/library/ff821988.aspx
                //Use the Add method of the OMaths collection to create an equation 
                //and add it to a document, selection, or range. The following example 
                //creates an equation and uses the BuildUp method to convert the 
                //equation to professional format.
                rtcControl.Range.OMaths.Add(rtcControl.Range);
                //这里插入的方程式类型是刚才宏里面看到的 wdOMathFunctionScrSub。        
                Word.OMathFunction myFunction = rtcControl.Range.OMaths[1].Functions.Add(
                    rtcControl.Range, Word.WdOMathFunctionType.wdOMathFunctionScrSub);
                Word.OMathScrSub myScrSub = myFunction.ScrSub;
    
                //OMathScrSub.E Property (Word) 
                //http://msdn.microsoft.com/en-us/library/ff840903.aspx
                //Returns an OMath object that represents the base of the specified equation 
                //object. Read-only.
                myScrSub.E.Range.Text = "x";
                
                //OMathScrSub.Sub Property (Word)   
                //http://msdn.microsoft.com/en-us/library/ff196130.aspx
                //Returns an OMath object that represents the subscript for a subscript 
                //object. Read-only. 
                myScrSub.Sub.Range.Text = "2";
    
            }
        }
    }

    希望能有帮助,谢谢。


    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年1月11日 7:55