Я не очень опытен в 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] + " ";
, но я не знаю, как это исправить. Любые идеи по исправлению этого или, возможно, даже по записи этого массива в таблицу?