Создание зачеркивания в документе Word с помощью C # - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь создать текстовый документ, но текст между определенными словами должен быть зачеркнут.Я пытался искать решения в Интернете, но единственное решение, которое я смог найти, было:

Set myRange = document.Range(Start:= document.Words(1).Start, _End:= document.Words(3).End)
myRange.Font.StrikeThrough = True

отсюда https://msdn.microsoft.com/en-us/vba/word-vba/articles/font-strikethrough-property-word для VBA.К сожалению не было ничего для C #.

Кто-нибудь знает, как добавить зачеркнутый текст к определенным фрагментам текста перед сохранением всего этого в текстовом документе?

Мой код для справки:

//input is a StringBuilder received by method  
 try {
            //Create an instance for word app
            Microsoft.Office.Interop.Word.Application winword = new Microsoft.Office.Interop.Word.Application();

            //Set animation status for word application
            winword.ShowAnimation = false;

            //Set status for word application is to be visible or not.
            winword.Visible = false;

            //Create a missing variable for missing value
            object missing = System.Reflection.Missing.Value;

            //Create a new document
            Microsoft.Office.Interop.Word.Document document = winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);


            //adding text to document
            document.Content.SetRange(0, 0);
            document.Content.Text = input.ToString();


            //Save the document
            object filename = @"C:\Users\TempUser\Desktop\temp1.docx";
            document.SaveAs2(ref filename);
            document.Close(ref missing, ref missing, ref missing);
            document = null;
            winword.Quit(ref missing, ref missing, ref missing);
            winword = null;
            Console.WriteLine("Document created successfully!");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

1 Ответ

0 голосов
/ 26 июня 2018

Я извлек соответствующую часть из вашего кода, чтобы было легче следовать.

Я предполагаю, что в этом примере текст должен быть вставлен в конец документа и отформатирован как "зачеркнутый".Обратите внимание, как я объявляю объект Word.Range и назначаю ему тело документа.Чтобы понять, как это работает, представьте диапазон как выделение, но у вас может быть более одного, и он не виден в документе.

Следующая строка «сворачивает» диапазон до конечной точки - как нажатие стрелки вправо.Если вы сделали , а не , чтобы свернуть диапазон, назначенный ему текст будет заменять того, что находится в документе (например, слишком многократное выделение выделения).Затем текст присваивается диапазону и применяемому зачеркиванию.

Обратите внимание, что в старые базовые дни Word «истина» и «ложь» не были понятиями, используемыми для настройки оформления шрифта.Объектная модель Word по-прежнему использует эти старые команды Word Basic.Под обложками они все еще используют -1 для истины и 0 для ложных (а иногда 1 для чего-то еще).В то время как языки VB могут использовать «псевдо-логические» настройки (true / false), которые были добавлены в объектную модель для удобства, C # не «видит» их, поэтому вам нужно -1 для true.

    //adding text to document
    object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
    Word.Range rng = document.Content;
    rng.Collapse(ref oCollapseEnd);
    rng.Text = input.ToString();
    rng.Font.Strikethrough = -1;  // 0 for false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...