DOCX SetColumnWidth null引用异常表插入

时间:2016-01-13 17:48:19

标签: c# ms-word nullreferenceexception novacode-docx

t.SetColumnWidth(i, 0.83);上获取空引用异常和中断。 我想在指定的点插入一个表并设置列宽。我的代码有什么问题,我使用的是DOCX API?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Novacode;
using System.Diagnostics;

namespace ConsoleApplicationSample
{
    class CreateDocument
    {
        public void CreateSampleDocument()
        {

            string fileName = @"C:\Users\Daniel\Documents\DocXExample.docx";

            var doc = DocX.Load(fileName);
            Table t = doc.AddTable(4, 4);

            t.Alignment = Alignment.center;          
            for (int i = 1; i <= 4; i++)
            {
                t.SetColumnWidth(i, 0.83);
            }
            t.Rows[0].Cells[0].Paragraphs[0].Append("Daniel Taki");
            t.Rows[0].Cells[1].Paragraphs[0].Append("Mike Jones");

            foreach (var paragraph in doc.Paragraphs)
            {
                paragraph.FindAll("#TABLE#").ForEach(indexer => paragraph.InsertTableAfterSelf((t)));
            }

            doc.ReplaceText("#TABLE#", "");

            doc.Save();

            Process.Start("WINWORD.EXE", fileName);
        }
    }
}

修改

我没有使用SetColumnWidth,而是尝试使用嵌套for循环遍历表中的每个单元格并单独设置单元格宽度。这最终得到了结果表,这不是我想要的。

  var numberOfRows = t.RowCount;
  var numberOfColumns = t.ColumnCount;


            for(int row = 0; row < numberOfRows; row++)
            {
                for(int col = 0; col < numberOfColumns; col++)
                {
                    t.Rows[row].Cells[col].Width = 0.86;
                }

            }

enter image description here

0 个答案:

没有答案