C# записать матрицу в файл Word - PullRequest
0 голосов
/ 23 марта 2020

Я не очень опытен в C# и Word. Я пишу приложение WinForms, в котором у меня есть сетка данных с несколькими строками (это своего рода список студентов в группе). При нажатии кнопки мне нужно сгенерировать матрицу смежности и записать ее в новый файл Word в таблицу. Должно быть столько таблиц с матрицей, сколько строк в представлении данных. Я решил начать с простого вывода этого массива и до сих пор не могу заставить его работать.

Вот код, который у меня есть на данный момент:

        private void buttonGenerateTask_Click(object sender, EventArgs e)
    {


        int vertices = Convert.ToInt32(ConfigurationManager.AppSettings.Get("numberOfVertices")); //retrieve the number of vertices for graph from config
        int edges = Convert.ToInt32(ConfigurationManager.AppSettings.Get("numberOfEdges")); //retrieve the number of edges from config

        int[,] matrix = new int[vertices, vertices];
        Random random = new Random();

        object oMissing = System.Reflection.Missing.Value;
        object oEndOfDoc = "\\endofdoc"; 

        Word._Application oWord;
        Word._Document oDoc;
        oWord = new Word.Application();
        oWord.Visible = true;
        oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
        ref oMissing, ref oMissing);
        var pText = oDoc.Paragraphs.Add();
        pText.Format.SpaceAfter = 10f;


        for (int n = 0; n < dataGridViewStudents.Rows.Count; n++)
        {
            for (int i = 0; i < edges; i++)
            {
                int v1 = random.Next(vertices);
                int v2 = random.Next(vertices);
                while (matrix[v1, v2] != 0 || v1 == v2)
                {
                    v1 = random.Next(vertices);
                    v2 = random.Next(vertices);
                }

                matrix[v1, v2] = random.Next(1, 100);
            }

            for (int i = 0; i < vertices; i++)
            {
                for (int j = 0; j < vertices; j++)
                    pText.Range.Text += matrix[i, j] + " ";
            }
            pText.Range.InsertParagraphAfter();
        }
        oWord.Visible = true;
    }

Когда я запускаю его вместо того, чтобы получить это 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1

Я получаю это 0 1 0 0 0 0 1 0 ...

Я думаю, что-то не так с этой строкой pText.Range.Text += matrix[i, j] + " ";, но я не знаю, как это исправить. Любые идеи по исправлению этого или, возможно, даже по записи этого массива в таблицу?

...