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