.NET でスタイルを操作する方法
このガイドでは、段落、文字、表、リストのスタイルを検索し、適用し、作成する方法を示します Aspose.Words .NET 用 FOSS、使用する Style, StyleCollection、および TableStyle クラスです。ドキュメントのスタイルコレクションの読み取り、言語間でスタイルを確実に検索する方法、段落や実行(run)へのスタイル適用、スタイルの作成とコピー、表スタイルに対する領域別条件付き書式の設定について説明します。
ステップバイステップガイド
ステップ 1: パッケージをインストールする
Aspose.Words FOSS for .NET はまだ NuGet パッケージを公開していないため、代わりにソースからライブラリをビルドしてください。https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git をクローンし、.NET SDK を使用して Release 構成で Aspose.Words.sln をビルドし、生成された Aspose.Words アセンブリをプロジェクトから参照します。このライブラリは .NET Standard 2.0 をターゲットにしているので、.NET Framework 4.6.2+ および .NET 6/8/10 上で動作します。
ステップ 2: 必要なクラスをインポートする
using Aspose.Words; ディレクティブを追加します – Style、StyleCollection、TableStyle、StyleType、StyleIdentifier、ConditionalStyle、ConditionalStyleCollection、および ConditionalStyleType はすべて Aspose.Words 名前空間にあり、Document と同じ場所にあります。
ステップ 3: ドキュメントのスタイル コレクションを読み取る
Document.Styles は StyleCollection を返します――ドキュメントに付随するすべての組み込みおよびユーザー定義の Style。StyleCollection.Count は保持しているスタイル数を報告し、DefaultFont / DefaultParagraphFormat は、明示的なスタイルが適用される前に新しいコンテンツが継承するドキュメント全体のデフォルト書式設定を説明します。
ステップ 4: スタイルを確実に検索する
表示名を使用して StyleCollection インデクサー、styles[name] でスタイルを取得します。組み込みスタイルの場合は、代わりに同じインデクサーに StyleIdentifier 列挙型の値を使用することを推奨します――styles[sti]――名前はローカライズされますが、StyleIdentifier の値はローカライズされないため、識別子による検索はドキュメントの言語に関係なく同じように機能します。インデクサーが期待するものを見つけられない場合は、同じスタイルに対して Word が認識する代替名があるか Style.Aliases を確認し、スタイルをプログラムで削除または名前変更する前に Style.BuiltIn を確認してください。組み込みスタイルは文書内の他の場所で名前で参照されていることが多いためです。
ステップ 5: スタイルを段落またはランに適用する
スタイルを保持する書式オブジェクトは、Style プロパティ(Style オブジェクト自体)と StyleName プロパティ(名前でスタイルを解決または作成するショートカット)の両方を公開します。段落スタイルを適用するには ParagraphFormat.Style または ParagraphFormat.StyleName を設定し、ランの書式に文字スタイルを適用するには Font.Style または Font.StyleName を設定します。コレクションに存在しない名前で StyleName を割り当てるとそのスタイルが作成されます――まず StyleCollection インデクサーでスタイルの存在を確認するか、意図した動作でない場合は Style オブジェクトを直接割り当ててください。
ステップ 6: スタイル階層を構築する
BaseStyleName を読み取って、特定のスタイルが未設定の書式を継承する元となるスタイルを取得し、LinkedStyleName は段落/文字スタイルのペア(Word が組み込みスタイル、たとえば見出しとそれにリンクした文字スタイルとして定義するもの)を取得し、NextParagraphStyleName はこのスタイルを使用した段落の後に入力された新しい段落に Word が割り当てるスタイルを取得します。関連するスタイルのセットを定義する際は、すべてのスタイルで同じ書式を繰り返す代わりに、ベーススタイルからフォント選択を継承させる見出しスタイルのファミリーなど、BaseStyleName を設定してください。
ステップ 7: スタイルを作成またはコピー
StyleCollection.Add(type, name) を StyleType(Paragraph、Character、Table、または List)と名前で呼び出し、新しい空のスタイルを作成し、必要に応じてその Font と ParagraphFormat プロパティを設定します。既存のスタイル(別の Document の StyleCollection からのものも含む)を複製するには、すべての書式プロパティを手動で読み取って再適用する代わりに、StyleCollection.AddCopy(style) を呼び出します。Style.Remove() を呼び出して、コレクションからスタイルを削除します。
ステップ 8: テーブルスタイルと条件付き書式を設定
TableStyle は Style をテーブルレイアウトプロパティ(Alignment、CellSpacing、LeftIndent、Shading、VerticalAlignment、および 4 つのパディングプロパティ(LeftPadding、RightPadding、TopPadding、BottomPadding))で拡張し、さらに RowStripe と ColumnStripe を加えます。これらはバンドパターンが繰り返される行数または列数を制御します。領域ごとの書式設定には、TableStyle.ConditionalStyles を構成します——これは各領域ごとに 1 つの ConditionalStyle を保持する ConditionalStyleCollection で、FirstRow、LastRow、FirstColumn、LastColumn、OddRowBanding、EvenRowBanding、OddColumnBanding、EvenColumnBanding、および 4 つのコーナーセル(TopLeftCell、TopRightCell、BottomLeftCell、BottomRightCell)が対象です。各 ConditionalStyle はそれぞれ固有の Font、ParagraphFormat、Shading、Borders、およびセルパディングを持ち、Type がそれが表す ConditionalStyleType 領域を報告します。テーブルの個別行ではなくこれらの領域に書式を設定することで、バンド付き、ヘッダー行、またはコーナーセルの書式がテーブル編集後も維持されます。
ステップ 9: 書式のリセットまたは削除
ConditionalStyle.ClearFormatting() を呼び出して 1 つの条件領域をリセットするか、ConditionalStyleCollection.ClearFormatting() を呼び出して TableStyle 上のすべての領域を一度にリセットします。StyleCollection.ClearQuickStyleGallery() は、スタイル自体は削除せずに Word UI のクイックスタイルギャラリーからすべてのスタイルを除去します――ドキュメント内容に手を加えずにギャラリーを縮小したいときに便利です。
一般的な問題と対処法
StyleCollection インデクサは名前検索で null を返します このドキュメントにスタイル名が存在しないか、組み込みスタイルがまだ使用されていないため、Word はそれを実体化していません。確認してください Style.Aliases 代替名を確認するか、または StyleCollection インデクサー with a StyleIdentifier 代わりに組み込みスタイル用。
設定 StyleName は予期せず新しいスタイルを作成します StyleName コレクションにまだ存在しない場合、指定された名前のスタイルを作成します。次に、 StyleCollection まずインデクサーでスタイルが存在するか確認し、あるいは Style オブジェクトを直接 Style プロパティを使用して StyleName.
テーブルのバンディングが TableStyle を適用した後に表示されません 条件付き書式の領域 – OddRowBanding, EvenRowBanding、および類似のもの – は設定されていませんでした TableStyle.ConditionalStyles。該当する ConditionalStyle エントリに ConditionalStyleCollection.
スタイルの変更は、すでにそのスタイルを使用しているコンテンツには影響しません スタイルの上に適用された直接(手動)書式は、スタイル自体の設定よりも優先されます。影響を受けたランや段落の直接書式をクリアするか、または設定 Style.AutomaticallyUpdate そうすれば、スタイルはその手動書式から再定義されます。
別の言語で作成された文書では、組み込みスタイルの検索が失敗します その StyleCollection インデクサは名前で呼び出されたとき、ローカライズされた表示名にマッチします。対応する StyleIdentifier 列挙値を使用してください。その識別子はロケールに依存しません。
よくある質問
ドキュメント内のすべてのスタイルのコレクションを取得するにはどうすればよいですか?
Document.Styles を参照してください。これにより、そのドキュメント内のすべての組み込みおよびユーザー定義の Style を含む StyleCollection が返されます。
Style と StyleIdentifier の違いは何ですか?
Style は実際のスタイルオブジェクトで、書式設定が含まれます;StyleIdentifier はロケールに依存しない列挙値で、ドキュメントの言語に関係なく特定の組み込みスタイルを検索するために StyleCollection インデクサーを介して使用されます。
テーブルスタイルは段落スタイルや文字スタイルとどのように異なりますか?
TableStyle は Style のサブクラスで、テーブルレイアウトプロパティ(Alignment、CellSpacing、padding)と、帯状行、ヘッダー行、コーナーセルなどの領域固有の書式設定のための ConditionalStyles コレクションを追加します――これらは段落スタイルや文字スタイルには適用されない書式概念です。
既存のスタイルを変更する代わりに、まったく新しいスタイルを作成できますか?
はい – StyleCollection.Add(type, name) を呼び出し、目的の StyleType と新しい名前を指定して空のスタイルを作成し、その後書式プロパティ(Font、ParagraphFormat など、段落スタイルや文字スタイルに対して)を設定します。
別のドキュメントからも含めて、スタイルを複製するにはどうすればよいですか?
StyleCollection.AddCopy(style) を呼び出し、Style オブジェクト(別の Document の StyleCollection から取得できる場合があります)を渡して、対象のコレクションにそのコピーを追加します。