C# で OpenXML を使用して、docx ファイルの内容を複製し、同じファイル内に保存しようとしています。
コードは次のとおりです。
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(wordFileNamePath, true))
{
foreach(OpenXmlElement element in wordDoc.MainDocumentPart.Document.ChildElements)
{
OpenXmlElement cloneElement = (OpenXmlElement)element.Clone();
wordDoc.MainDocumentPart.Document.Append(cloneElement);
}
wordDoc.MainDocumentPart.Document.Save();
}
コードは正常に機能しており、必要なことを行っています。私の問題は、結果の docx ファイルが部分的に破損していることです。ファイルを開くと、次の 2 つのメッセージが表示されます。
[OK] をクリックしてから [はい] をクリックすると、通常どおりファイルが開きます。ただし、「名前を付けて保存」するまで、ファイルは破損し続けます(同じ名前または別の名前で)。それが、新しく保存されたファイルが固定される方法です。
Open XML SDK 2.5 Productivity Tool for Microsoft Office を使用することで、ファイルを検証し、反映されたコードを確認できます。ファイルを検証すると、次の 5 つのエラーが発生します。
私のコードで使用している「Clone」機能は、要素をそのままコピーするため、ドキュメントに追加すると、いくつかの ID の重複が発生すると思います。
それ自体を複製した後、適切に機能する DOCX ファイルを取得するためのアイデアはありますか? 代替コードは大歓迎です。