2

でヌル参照例外とブレークを取得します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;
                }

            }

ここに画像の説明を入力

4

0 に答える 0