OfficeのWord相互運用機能を使用してWord文書を作成しています。私はコードを介して見出しスタイルを設定しています。コンテンツは正しくスタイル設定されていますが、作成されたWord文書を開くと、ヘッダーでの選択にスタイルが選択されていません。これにより、目次で見出しが見つかりません。
object oMissing = Missing.Value;
//Start Word and create a new document.
var application = new Application();
application.Visible = true;
var document = application.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
foreach (var member in assembly.Members)
{
//Insert a paragraph at the beginning of the document
var paragraph = document.Content.Paragraphs.Add(ref oMissing);
paragraph.set_Style(WdBuiltinStyle.wdStyleHeading1);
paragraph.Range.Text = member.MemberName;
paragraph.Range.InsertParagraphAfter();
}
document.TablesOfContents.Add(document.Content, true /*use heading styles*/, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing);
document.SaveAs(@"C:\test.docx", oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
document.Close();
application.Quit();
この例では、目次に「エントリが見つかりません」と表示されます。
コンテンツは見出しスタイルで正しくスタイル設定されていることに注意してください。ただし、ドキュメントを手動で開いて[見出し1]を選択すると、目次でエントリが正しく検出されます。
なぜこれが起こるのか、何か考えはありますか?私は組み込みのスタイル名を持つcallignset_Styleです。なぜそれはスタイルを適用するのに、実際にはスタイル(この場合は見出し)として扱われないのですか?
アップデート
次のコードを追加すると、最初の見出しだけがWordの見出しとして認識されるようになります。
foreach (var member in assembly.Members)
{
document.ActiveWindow.Selection.set_Style(WdBuiltinStyle.wdStyleHeading1);
//Insert a paragraph at the beginning of the document
var paragraph = document.Content.Paragraphs.Add(ref oMissing);
paragraph.set_Style(WdBuiltinStyle.wdStyleHeading1);
paragraph.Range.Text = member.MemberName;
paragraph.Range.InsertParagraphAfter();
}