オープン XML を使用して 1 つのスライド PowerPoint ファイルを作成しています。プログラムで更新する必要がある PPT のプレースホルダーにタグを付けました。プレースホルダーを見つけることができ、データベースからその値を更新できます。
ここでの問題は、ユーザーが WYSIWYG エディターを使用して入力した HTML コードを、ユーザーが入力したのと同じ形式 (箇条書きなど) で表示する必要があることです。
プレースホルダーをHTMLテキストに置き換えようとすると、すべてのタグなどと同様にHTMLテキストがそのまま貼り付けられました。
var presPart = myPres.PresentationPart;
var slideIdList = presPart.Presentation.SlideIdList;
var list = slideIdList.ChildElements
.Cast<SlideId>()
.Select(x => presPart.GetPartById(x.RelationshipId))
.Cast<SlidePart>();
var tableSlidePart = (SlidePart)list.First();
var secondSlidePart = (SlidePart)list.Last();
var current = tableSlidePart;
シンプルなプレーンテキストを貼り付ける必要がある場合、下の行は正常に機能しています
List<DocumentFormat.OpenXml.Drawing.Text> textList = tableSlidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>().Where(t => t.Text.Equals("IntroText")).ToList();
foreach (DocumentFormat.OpenXml.Drawing.Text text in textList)
{
text.Text = "Some Text";
}
しかし、HTML をプレースホルダーに貼り付けたい場合、通常のプレーン文字列として扱われます。
textList = null;
textList = tableSlidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>().Where(t => t.Text.Equals("##DESCRIPTION##")).ToList();
foreach (DocumentFormat.OpenXml.Drawing.Text text in textList)
text.Text = "<html><table><tr><td><b>Hello</b></td></tr></table></html>";
ヘルプやポインタをいただければ幸いです。前もって感謝します