Как сохранить вывод Console.WriteLine в файл Word - PullRequest
0 голосов
/ 22 января 2020

Нужна помощь, чтобы понять, как я могу сохранить вывод моей программы C# в файл слова? Любое руководство ценится, так как я очень новичок в этом мире программирования.

class Test
        {
            static void Main(string[] args)
            {
              Application app = new word.Application();
              Document doc = app.Documents.Open(filePath);

                int p, lastInt = 0, input;
                Console.WriteLine("Enter the Number of Rows : ");
                input = int.Parse(Console.ReadLine());
                for (int i = 1; i <= input; i++)
                {
                    for (p = 1; p <= i; p++)
                    {
                        if (lastInt == 1)
                        {
                            Console.Write("0");
                            lastInt = 0;
                        }
                        else if (lastInt == 0)
                        {
                            Console.Write("1");
                            lastInt = 1;
                        }
                    } Console.Write("\n");
                }
                Console.WriteLine();

                //How to save the above Console.Writeline in the word file??

                Doc.close();
                App.Quit();
            }
        }

Ответы [ 3 ]

0 голосов
/ 22 января 2020

Добавление другого ответа, поскольку оно отличается от основ, в которых говорится об использовании функции принтера для простого создания StringBuilder и добавления в конце.

Вы можете увидеть, как можно изменить цвета и фон текст следующим образом. Цвет устанавливается при создании новой строки.

    public static void CreateWordDocument()
    {
        //How to save the above Console.Writeline in the word file??
        string filePath = @"C:\temp\newdoc.doc";
        _Application word = new Application();
        var doc = word.Documents.Add(); 
        var para = doc.Paragraphs.Add();

        para.Range.Text = string.Empty;

        void printer(string message, WdColor color = WdColor.wdColorBlack, WdColor background = WdColor.wdColorWhite, bool newLine = true)
        {
            if (newLine)
            {
                para.Range.InsertAfter(message + Environment.NewLine);
                para.Range.Font.Color = color;
                para.Range.Shading.BackgroundPatternColor = background;
                Console.WriteLine(message);
            }
            else
            {
                para.Range.InsertAfter(message);
                Console.Write(message);
            }
        }

        int p, lastInt = 0, input;
        printer("Enter the Number of Rows : ", WdColor.wdColorDarkTeal, newLine: false);
        input = int.Parse(Console.ReadLine());
        printer(input.ToString(), WdColor.wdColorGreen);

        for (int i = 1; i <= input; i++)
        {
            for (p = 1; p <= i; p++)
            {
                if (lastInt == 1)
                {
                    printer("0", newLine:false);
                    lastInt = 0;
                }
                else if (lastInt == 0)
                {
                    printer("1", newLine: false);
                    lastInt = 1;
                }

            }
            printer(Environment.NewLine, WdColor.wdColorLightOrange);
        }

        doc.SaveAs2(filePath);
        doc.Close();

    }

Я настоятельно рекомендую прочитать о том, как манипулировать данными в документе Word, но это должно дать вам хорошее представление о том, как сохранить то, что вы пытаетесь распечатать. утешить. Все, что вы печатаете в Консоль с помощью Console.WriteLine (), не может быть перенаправлено для записи в текстовый документ в коде c#.

0 голосов
/ 22 января 2020

Существует несколько способов сохранить вывод в файлы Word:

  1. Вы можете автоматизировать Word из любого приложения. См. Как автоматизировать Microsoft Word для создания нового документа с помощью Visual C# для получения дополнительной информации.
  2. Создание документа Word без автоматизации Office. Open XML SDK построен на API System.IO.Packaging и предоставляет строго типизированные классы для работы с документами, которые соответствуют спецификации форматов файлов Office Open XML.
0 голосов
/ 22 января 2020

Я использовал следующий код для создания текстового документа, создания абзаца, ввода текста и сохранения его.

Обратите внимание, что при использовании Console.Write или Console.WriteLine данные выводятся только на Console. Вы можете использовать вспомогательный метод или что-то вроде делегата, который может сделать оба за вас. Обычно я использую StringBuilder для хранения всех данных, которые мне нужно сохранить, и в конце добавляю их в файл / документ и т. Д. c, а затем сохраняю.

    StringBuilder sb = new StringBuilder();
    void printer(string message, bool newLine = true) 
    { 
        if (newLine) 
        {
            sb.AppendLine(message); 
            Console.WriteLine(message); 
        }
        else 
        {
            sb.Append(message); 
            Console.Write(message); 
        } 
    }

    string filePath = @"C:\temp\newdoc.doc";
    _Application word = new Application();
    var doc = word.Documents.Add();

    int p, lastInt = 0, input;
    printer("Enter the Number of Rows : ", false);
    input = int.Parse(Console.ReadLine());
    printer(input.ToString());
    for (int i = 1; i <= input; i++)
    {
        for (p = 1; p <= i; p++)
        {
            if (lastInt == 1)
            {
                printer("0", false);
                lastInt = 0;
            }
            else if (lastInt == 0)
            {
                printer("1", false);
                lastInt = 1;
            }
        }
        printer("\n");
    }
    printer("");

    //How to save the above Console.Writeline in the word file??
    var para = doc.Paragraphs.Add();
    para.Range.Text = sb.ToString();

    doc.SaveAs2(filePath);
    doc.Close();
...