'Word found unreadable content in docm

I am writing a program in C# using Open XML that transfers data from excel to word.

Currently, I have this:

    internal override void UpdateSectionSheets(int sectionNum, List<List<string>> tableContents)
    {
      using (WordprocessingDocument doc = WordprocessingDocument.Open(MainForm.WordFileDialog.FileName, true))
      {
        List<Table> tables = doc.MainDocumentPart.Document.Descendants<Table>().ToList();
        foreach(Table table in tables)
        {
          int row = 1;
          if (table.Descendants<TableRow>().FirstOrDefault().Descendants<TableCell>().FirstOrDefault().InnerText == sectionNum.ToString())
          {
            foreach(var item in tableContents[0])
            {
              // splits the tableContents[0][row - 1] into individual strings at each instance of "\n\n"
              String str = tableContents[0][row - 1];
              String[] separator = {"\n\n"};
              Int32 count = 6; // max 6 sub strings (usually only two but allowed for extra)
              String[] subStrs = str.Split(separator, count, StringSplitOptions.RemoveEmptyEntries);

              // transfer comment
              table.Descendants<TableRow>().ElementAt(row).Descendants<TableCell>().ElementAt(2).RemoveAllChildren<Paragraph>(); // removes the existing contents in the cell

              foreach (string s in subStrs)
              {
                // for every substring, create a new paragraph and append the substring to that new paragraph. Makes it so that each sentence is on its own line
                Text text = new Text(s);
                table.Descendants<TableRow>().ElementAt(row).Descendants<TableCell>().ElementAt(2).AppendChild(new Paragraph(new Run(text)));
              }

              // transfer verdict
              table.Descendants<TableRow>().ElementAt(row).Descendants<TableCell>().ElementAt(3).RemoveAllChildren<Paragraph>();
              Paragraph p = new Paragraph(new ParagraphProperties(new Justification() { Val = JustificationValues.Center }));
              p.Append(new Run(new Text(tableContents[1][row - 1])));
              table.Descendants<TableRow>().ElementAt(row).Descendants<TableCell>().ElementAt(3).AppendChild(p);

              row++;
            }
          }
        }
        doc.Save();
      }
    }

I believe the line causing the issue is: table.Descendants<TableRow>().ElementAt(row).Descendants<TableCell>().ElementAt(2).AppendChild(new Paragraph(new Run(text))); If I put new Text(tableContents[0][row - 1]) in place of (text) in the above line, the program will run and word doc will open with no errors, but the output is not in the format I need.

The program runs without throwing any errors, but when I try to open the word doc it gives a "word found unreadable content in xxx.docm" error. If I say I trust the source and want word to recover the document, I can open the doc and see that the code is working how I want. However, I don't want to have to do that every time. Does anyone know what is causing the error and how I can fix it?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source