テーブルセルの結合
テーブル内の特定の行には、テーブルの全幅を占める見出しまたは大きなテキストブロックが必要な場合があります。 テーブルを適切に設計するために、ユーザーは複数のテーブルセルを1つにマージできます。 Aspose.Wordsは、HTMLコンテンツのインポートを含むすべての入力形式を操作するときに、マージされたセルをサポートします。
テーブルセルをマージする方法
Aspose.Wordsでは、マージされたセルはCellFormatクラスの次のプロパティで表されます:
- HorizontalMergeセルがセルの水平方向のマージの一部であるかどうかを説明します
- VerticalMergeは、セルがセルの垂直マージの一部であるかどうかを表します
これらのプロパティの値によって、セルのマージ動作が決まります:
- マージされたセルのシーケンスの最初のセルにはCellMerge.Firstがあります
- その後にマージされたセルはCellMerge.Previousになります
- マージされていないセルにはCellMerge.Noneがあります
セルがマージされているかどうかの確認
セルがマージされたセルのシーケンスの一部であるかどうかを確認するには、HorizontalMergeとVerticalMergeプロパティを確認するだけです。
次のコード例は、水平方向と垂直方向のセルのマージの種類を印刷する方法を示しています:
DocumentBuilderを使用した場合のテーブルセルのマージ
DocumentBuilderで作成されたテーブル内のセルをマージするには、マージが期待される各セルに適切なマージタイプを設定する必要があります。CellMerge.First、次にCellMerge.Previousです。
また、マージが必要ないセルのマージ設定をクリアすることを忘れないでください–これは、最初の非マージセルをCellMerge.Noneに設定することで実行できます。 これを行わないと、テーブル内のすべてのセルがマージされます。
次のコード例は、最初の行のセルが水平方向にマージされる2つの行を持つテーブルを作成する方法を示しています:
次のコード例は、最初の列のセルが垂直方向にマージされる2列のテーブルを作成する方法を示しています:
それ以外の場合のテーブルセルのマージ
既存のテーブルなど、DocumentBuilderが使用されていない他の状況では、前の方法でセルをマージするのはそれほど簡単ではない場合があります。 代わりに、マージプロパティをセルに適用するための基本的な操作を、タスクをはるかに簡単にするメソッドでラップできます。 このメソッドは、テーブル内のセルの範囲をマージするために呼び出されるマージ自動化メソッドに似ています。
以下のコードは、指定されたセルから開始し、終了セルで終了する、指定された範囲のテーブルセルをマージします。 この場合、範囲は複数の行または列にまたがることができます:
次のコード例は、指定した2つのセルの間でセルの範囲をマージする方法を示しています:
HTMLテーブル内の縦と横のマージされたセル
前の記事で述べたように、Microsoft Wordのテーブルは独立した行のセットです。 各行には、他の行のセルから独立したセルのセットがあります。 したがって、Microsoft Wordテーブルには「列」のようなオブジェクトはなく、「1番目の列」は「テーブルの各行の1番目のセルのセット」のようなものです。 これにより、ユーザーは、たとえば、1行目が2cmと1cmの2つのセルで構成され、2行目が1cmと2cmの幅の2つの異なるセルで構成されるテーブルを持つ そしてAspose.Wordsはこのテーブルの概念をサポートしています。
HTML のテーブルは本質的に異なる構造を持ちます。各行には同じ数のセルがあり、(タスクにとって重要なことですが) 各セルの幅は対応する列の幅で、1 つの列内のすべてのセルの幅は同じです。したがって、HorizontalMerge と VerticalMerge が誤った値を返す場合は、次のコード例を使用します。
水平方向に結合されたセルに変換する
一部の新しいバージョンのMicrosoft Wordでは、セルが水平方向にマージされるときにマージフラグが使用されなくなったため、マージされたセルを検出できない場合が しかし、マージフラグを使用してセルが横方向にセルにマージされる状況では、Aspose.Wordsはセルを変換するConvertToHorizontallyMergedCells
メソッドを提供します。 このメソッドは、単純にテーブルを変換し、必要に応じて新しいセルを追加します。
次のコード例は、上記のメソッドの動作を示しています: