Word 文書内の表は、データを明確かつ構造的に整理するのに役立ちます。しかし、文書が複雑になるにつれて、表の構造を調整する必要が生じることがあります。複数の表を結合して包括的に表示したり、大きな表を分割して可読性を向上させたりすることで、データの提示が大幅に改善されます。この記事では、Spire.Doc for .NET を使用して、C# で Word 文書内の表を結合または分割する方法を説明します。
Spire.Doc for .NET をインストールします
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
C# で Word 文書内の表を結合する
Spire.Doc for .NET を使用すると、他の表からすべての行を対象の表にコピーし、その後他の表を削除することで、2つ以上の表を1つに結合できます。以下はその詳細手順です。
- Document のインスタンスを作成します。
- Document.LoadFromFile() メソッドを使用して、Word 文書を読み込みます。
- Document.Sections[] プロパティを使用して、指定したセクションを取得します。
- セクション内の2つの表を section.Tables[] プロパティで取得します。
- 2番目の表のすべての行を Table.Rows[].Clone() メソッドを使用してコピーします。
- 2番目の表の行を Table.Rows.Add() メソッドを使用して1番目の表に追加します。
- Document.SaveToFile() メソッドを使用して、文書を保存します。
- C#
using Spire.Doc;
namespace CombineTables
{
class Program
{
static void Main(string[] args)
{
// ドキュメントのインスタンスを作成
Document doc = new Document();
// Word ドキュメントを読み込む
doc.LoadFromFile("Sample.docx");
// 最初のセクションを取得
Section section = doc.Sections[0];
// セクション内の最初と2番目のテーブルを取得
Table table1 = section.Tables[0] as Table;
Table table2 = section.Tables[1] as Table;
// table2の行をtable1に追加
for (int i = 0; i < table2.Rows.Count; i++)
{
table1.Rows.Add(table2.Rows[i].Clone());
}
// table2を削除
section.Tables.Remove(table2);
// 結果のドキュメントを保存
doc.SaveToFile("Word文書内の表をマージ.docx", FileFormat.Docx);
doc.Close();
}
}
}
C# で Word 文書内の表を分割する
表を2つ以上に分割するには、新しい表を作成し、元の表から指定した行を新しい表にコピーし、元の表からそれらの行を削除します。以下はその詳細手順です。
- Document のインスタンスを作成します。
- Document.LoadFromFile() メソッドを使用して、Word 文書を読み込みます。
- Document.Sections[] プロパティを使用して、指定したセクションを取得します。
- セクション内の指定した表を section.Tables[] プロパティで取得します。
- 表を分割する行のインデックスを指定します。
- Table クラスの新しいインスタンスを作成します。
- 元の表の指定した行を Table.Rows[].Clone() メソッドを使用してコピーします。
- 指定した行を新しい表に Table.Rows.Add() メソッドを使用して追加します。
- コピーした行を元の表から Table.Rows.RemoveAt() メソッドを使用して削除します。
- 新しい表をセクションに Section.Tables.Add() メソッドを使用して追加します。
- Document.SaveToFile() メソッドを使用して、文書を保存します。
- C#
using Spire.Doc;
namespace SplitWordTable
{
class Program
{
static void Main(string[] args)
{
// ドキュメントのインスタンスを作成
Document doc = new Document();
// Word ドキュメントを読み込む
doc.LoadFromFile("Word文書内の表をマージ.docx");
// 最初のセクションを取得
Section section = doc.Sections[0];
// セクション内の最初のテーブルを取得
Table table = section.Tables[0] as Table;
// テーブルを5行目から分割するように指定
int splitIndex = 5;
// 同じスタイルで新しいテーブルを作成
Table newTable = table.Clone();
newTable.Rows.Clear();
// 5行目から最後の行までを新しいテーブルに追加
for (int i = splitIndex; i < table.Rows.Count; i++)
{
newTable.Rows.Add(table.Rows[i].Clone());
}
// 元のテーブルから行を削除
for (int i = table.Rows.Count - 1; i >= splitIndex; i--)
{
table.Rows.RemoveAt(i);
}
// 新しいテーブルをセクションに追加
section.Tables.Add(newTable);
// 結果のドキュメントを保存
doc.SaveToFile("Word文書内の表を分割.docx", FileFormat.Docx);
doc.Close();
}
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。