Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2012, 16:02   #1
YarUnderoaker
Пользователь
 
Регистрация: 30.03.2010
Сообщений: 11
По умолчанию MS Word 2010: создание формул

Приветствую.

Пытаюсь сделать генератор документов Word. В документ надо вставить формулы.
Как я понял из разных справочных материалов, это делается путем вставки формулы в линейном формате с последующим её преобразованием в профессиональный вид.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.Threading;

namespace CreateEquInMSWord
{
    class Program
    {
        static void Main(string[] args)
        {
            Word._Application myApp = new Word.Application();
            myApp.Visible = true;

            Word.Document myDoc = myApp.Documents.Add();

            Word.Range myFunctionR = myApp.Selection.OMaths.Add(myApp.Selection.Range);
            Word.OMathFunction myFunction = myApp.Selection.OMaths[1].Functions.Add(
                myApp.Selection.Range, Word.WdOMathFunctionType.wdOMathFunctionBox);
            Word.OMathBox myBox = myFunction.Box;

            myBox.E.Range.Text = "\\sqrt(5&a^2)";
            myBox.E.BuildUp(); \\ - преобразовать в профессиональный вид
        }
    }
}
Проблема в том, что выражения вида "\\sqrt" никак не хотят преобразовываться, хотя простые выражения a+b/c преобразовуются нормально. В самом Word'е вручную все работает.

----
Мда, однако надо делать что-то вроде этого (чуть ли не имитировать работу пользователя)
Код:
            Word.Range myFunctionR = myApp.Selection.OMaths.Add(myApp.Selection.Range);
            Word.OMathFunction myFunction = myApp.Selection.OMaths[1].Functions.Add(
                myApp.Selection.Range, Word.WdOMathFunctionType.wdOMathFunctionRad);
            Word.Selection wdSelection = myApp.Selection;
            object unit = Word.WdUnits.wdCharacter;
            object lu = Word.WdUnits.wdLine;
            object count = 1;
            object dcount = 2;
            object tcount = 3;
            wdSelection.MoveLeft(ref unit, ref dcount);
            wdSelection.TypeText("5");
            wdSelection.MoveRight(ref unit, ref count);
            wdSelection.TypeText("a^2");
            myFunction.Rad.E.BuildUp();

Последний раз редактировалось YarUnderoaker; 05.11.2012 в 16:48. Причина: добавлено
YarUnderoaker вне форума Ответить с цитированием
Старый 01.04.2016, 11:52   #2
Slades
Новичок
Джуниор
 
Регистрация: 01.04.2016
Сообщений: 1
По умолчанию

Подскажите
Если фурмул несколько вставлять надо , как отредактировать код ?
Word.Range myFunctionR = myApp.Selection.OMaths.Add(myApp.Se lection.Range);
Word.OMathFunction myFunction = myApp.Selection.OMaths[1].Functions.Add(
myApp.Selection.Range, Word.WdOMathFunctionType.wdOMathFun ctionBox);

При попытке записи OMaths[2], ругается, запрашиваемый номер семейства не существует, спасибо
Slades вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание собственных букв или изменение существующих в Word 2010 kaiser5 Microsoft Office Word 3 29.04.2012 02:43
Редактор формул в word 2007? M17 Microsoft Office Word 6 12.12.2011 00:38
Word 2010 и Delphi 2010 David023 Мультимедиа в Delphi 1 30.04.2011 15:51
Вопрос по 2010 Excel-ю по поводу расчета формул mateys Microsoft Office Excel 4 29.08.2010 19:20
Вывод формул из Excel в Word Mathtype. Tidus Microsoft Office Excel 1 02.06.2010 12:37