使用VSTO向Word文档中添加数学公式

这是个极其简单的实例,用来向Word文档中添加一个数学汇总公式。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
using System.Diagnostics;

namespace VSTOInsertEquations
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Word.Application wdApplication = null;
            Process[] pl = Process.GetProcessesByName("WINWORD.exe");
            if (pl.Length > 0)
            {
                wdApplication = (Word.Application)System.Runtime.InteropServices
                    .Marshal.GetActiveObject("Word.Application");
            }
            else
            {
                wdApplication = new Word.Application();
            }
            if (wdApplication != null)
            {
                Word.Document newDocument = wdApplication.Documents.Add();
                //一下代码添加了汇总公式
                Word.Range wdFunctionR = wdApplication.Selection.OMaths
                    .Add(wdApplication.Selection.Range);
                Word.OMathFunction wdFunction = wdApplication.Selection
                    .OMaths[1].Functions.Add(wdApplication.Selection.Range,
                    Word.WdOMathFunctionType.wdOMathFunctionNary);                    
                Word.OMathNary wdNary = wdFunction.Nary;
                wdNary.Char = 8721;
                wdNary.Grow = false;
                wdNary.SubSupLim = false;
                wdNary.HideSub = false;
                wdNary.HideSup = false;
                //以下代码将数值填写入公式
                Word.Selection wdSelection = wdApplication.Selection;
                object unit = Word.WdUnits.wdCharacter;
                object lu = Word.WdUnits.wdLine;
                object count = 1;
                object tcount = 3;
                wdSelection.MoveLeft(ref unit, ref count);
                wdSelection.TypeText("11");
                wdSelection.MoveLeft(ref unit, ref tcount);
                wdSelection.TypeText("12");
                wdSelection.MoveDown(ref lu, ref count);
                wdSelection.TypeText("13");
                wdNary.Application.Visible = true;
            }
        }
    }
}

相关资源:http://download.csdn.net/detail/tx_officedev/4053367


posted @ 2012-02-09 12:49  许阳 无锡  阅读(485)  评论(0编辑  收藏  举报