Ajouter une chaîne HTML au document OpenXML (* .docx)
Je suis en train d'utiliser Microsoft OpenXML 2.5 bibliothèque pour créer un document OpenXML. Tout fonctionne très bien, jusqu'à ce que j'essaie d'insérer une chaîne HTML dans mon document. J'ai parcouru le web et voici ce que j'ai jusqu'à présent (ciselée juste la partie que je vais avoir des ennuis avec):
Paragraph paragraph = new Paragraph();
Run run = new Run();
string altChunkId = "id1";
AlternativeFormatImportPart chunk =
document.MainDocumentPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.Html, altChunkId);
chunk.FeedData(new MemoryStream(Encoding.UTF8.GetBytes(ioi.Text)));
AltChunk altChunk = new AltChunk { Id = altChunkId };
run.AppendChild(new Break());
paragraph.AppendChild(run);
body.AppendChild(paragraph);
Évidemment, je n'ai pas fait ajouté la altChunk dans cet exemple, mais j'ai essayé d'ajouter partout - à la course, le paragraphe, le corps, etc. En cas, je suis incapable d'ouvrir le fichier docx dans Word 2010.
C'est me faire un peu de noisette, car il semble que ce devrait être simple (j'avoue que je ne suis pas la pleine compréhension de la AltChunk "chose"). Serais reconnaissant de toute aide.
Note de côté: Une chose que je n'ai trouvé que c'était intéressant, et je ne sais pas si c'est réellement un problème ou pas, est cette réponse qui dit AltChunk corrompt le fichier lorsque vous travaillez à partir d'un MemoryStream. Quelqu'un peut-il confirmer que c'est/ce n'est pas vrai?
source d'informationauteur JasCav
Vous devez vous connecter pour publier un commentaire.
Je peux reproduire l'erreur "... il y a un problème avec le contenu" en utilisant
incomplète document HTML que le contenu de l'alternative format de la partie d'importation.
Par exemple, si vous utilisez le code HTML suivant
<h1>HELLO</h1>
MS Word est impossible d'ouvrir le document.
Le code ci-dessous montre comment ajouter un
AlternativeFormatImportPart
à un document word.(J'ai testé le code avec MS Word 2013).
Selon l'Office OpenXML spécification valide les éléments de parent pour l'
w:altChunk
élément sontbody, comment, docPartBody, endnote, footnote, ftr, hdr and tc
.Donc, j'ai ajouté les
w:altChunk
à l'élément body.Pour plus d'informations sur le
w:altChunk
élément de voir ce MSDN lien.MODIFIER
Comme l'a souligné @user2945722, assurez-vous que l'OpenXml bibliothèque correctlty interprète le tableau d'octets en UTF-8, vous devez ajouter l'UTF-8 préambule. Cela peut être fait de cette façon:
Cela permettra d'éviter votre é est rendu étant's, votre ä s comme ä's, etc.
Eu le même problème ici, mais une cause totalement différente. Vaut la peine d'essayer si la solution retenue n'aide pas. Essayez de fermer le fichier après l'enregistrement. Dans mon cas, il s'agit de la différence entre un corrompu et un nettoyage de fichier docx. Curieusement, la plupart des autres opérations de travailler avec une Save() et la sortie du programme.