OpenXMLで操作されているWordテンプレートに多数のテーブルがあります。 Table
と、すべての行ではなくTableCaption
を削除しOpenXML - WordでTableCaptionを削除する
table.RemoveAllChildren();
table.Remove();
:それらのいくつかは、その場合には、私はこのコードを使用して、条件に応じて削除する必要があるかもしれません。
私はforeach (Table t in XMLReport.MainDocumentPart.Document.Descendants<Table>().ToList())
を使用しているので、ToList()は反復処理中に削除することができます。テーブル自体はドキュメントから削除されますが、キャプションはそのまま残ります。キャプションをリストに追加してループ外に取り除こうとしましたが、うまくいきませんでした。テキストを設定し、新しいTableCaption
に割り当てると、何も変更されないように見えます。 TableProperties
親とその子をすべて削除しても何もしません。 TableCaption
のRemove()
を呼び出すことはうまくいきません。
TableCaption
を削除する適切な方法は何ですか?
全コード:
byte[] byteArray = File.ReadAllBytes(@"C:\path\XML in.docx");
using (MemoryStream stream = new MemoryStream())
{
stream.Write(byteArray, 0, byteArray.Length);
using (WordprocessingDocument XMLDoc = WordprocessingDocument.Open(stream, true))
{
foreach (Table t in XMLDoc.MainDocumentPart.Document.Descendants<Table>().ToList())
{
//switch case
if (object1.prop1.Count == 0)
{
table.RemoveAllChildren();
table.Remove();
}
}
}
File.WriteAllBytes(@"C:\path\XML out.docx", stream.ToArray());